- 是的,两个单独的字段是去这里的方式
- 就编辑而言,您的
ItemTemplate
. 一个用于View,一个用于Edit。默认情况下,编辑面板的可见性设置为 false。每行都有一个“编辑”按钮,其中项目的 ID 为其CommandArgument
,按下该按钮时,您将设置一个带有所单击项目 ID 的 Session 变量。然后,当您重新绑定中继器时,您会根据会话编辑 ID 变量检查每个项目的 ID。如果它们匹配,则将View面板的可见性设置为 false,并将Edit面板的可见性设置为 true。编辑_面板有两个按钮,一个用于保存,一个用于取消。一旦用户单击 Save 或 Edit,您就可以进行任何后端处理,清除 Session 变量并重新绑定转发器。尽管有内置控件具有“内置”编辑功能,但我发现使用中继器分配给我的控件更出色。
这个方法我用过很多次了,效果很好!
如果您需要任何代码来说明上述任何一点,请随时提出。
另一方面,您的 XML 看起来有点奇怪。似乎没有代表每个 URL/ID 对的父节点。这是一个疏忽,一个错字,还是我在这里遗漏了什么?
编辑:
这是在您的场景中利用 ViewState 的好方法:
private enum PageStates
{
None = 0,
View = 1,
Edit = 2
}
/// <summary>
/// The current state of the page
/// </summary>
private PageStates PageState
{
get
{
if (ViewState["PageState"] == null)
ViewState["PageState"] = PageStates.View; //default to view state
return (PageStates)ViewState["PageState"];
}
set
{
ViewState["PageState"] = value;
}
}
通过将 ViewState 访问封装在一个属性中,对存储变量(Session、DB 等)的方法的任何更改都会从访问它的任何代码中抽象出来。