使用单个编辑按钮在转发器中编辑项目(超链接)
本文关键字:编辑 项目 转发器 超链接 单个 编辑按 按钮 | 更新日期: 2023-09-27 17:56:11
>我有一个绑定到List的中继器<>从XML文件生成。该文件由两个节点组成,即 ID 和项。
<Items><ID>0</ID>
<Item><![CDATA[<a target='blank' href="http://www.cnn.com">CNN News</a> ]]></Item>
我需要提供编辑功能以允许用户编辑转发器中每个项目的 url 和文本。我不想为每行使用单独的编辑/保存按钮;太杂乱了。我想这意味着一个编辑/保存按钮,这基本上会导致在每次保存时重新"创建"XML文件。或者,是否有更好的方法来做到这一点?
我想我在问两件事:
有关如何使 URL 列表(URL 和文本)可编辑的设计建议。我猜是两个单独的文本框?
如何处理编辑。
谢谢。
- 是
- 的,两个单独的字段是这里的路
- 就编辑而言,您可以有两个面板 为您的
ItemTemplate
.一个用于查看,一个用于编辑。默认情况下,"编辑"面板的可见性设置为 false。每行都有一个"编辑"按钮,其ID作为其CommandArgument
,按下该按钮时,您可以使用单击的项目的ID设置会话变量。然后,当您重新绑定转发器时,根据会话编辑 ID 变量检查每个项目的 ID。如果它们匹配,则将"视图"面板的可见性设置为 false,将"编辑"面板的可见性设置为 true。"编辑"面板有两个按钮,一个用于保存,一个用于取消。用户单击"保存"或"编辑"后,将执行任何后端处理,清除 Session 变量并重新绑定转发器。尽管有内置控件具有"内置"编辑功能,但我发现使用中继器分配给我的控件更胜一筹。
我已经多次使用这种方法,效果很好!
如果您需要任何代码来说明上述任何一点,请随时询问。
另一方面,您的XML看起来有点奇怪。似乎没有父节点来表示每个 URL/ID 对。这是一个疏忽,一个错别字,还是我在这里错过了什么?
编辑:
这是在方案中利用视图状态的好方法:
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 访问封装在属性中,对存储变量的方法(会话、DB 等)所做的任何更改都将从访问它的任何代码中抽象出来。