我有一个转发器控件,其中包含一个包含数据绑定标签和DropDownList控件的ItemTemplate。每次迭代时,我都想在每次迭代时更改DropDownList的ID,以便在提交时将值用作输入。谁能告诉我这通常是怎么做的?感谢。
答案 0 :(得分:1)
这是自动完成的,有关其工作原理的详细信息,请参阅Using the NamingContainer Property to Determine a Control's Naming Container。
我想这可能不是你想要的。为了从下拉列表中获取值,您应该循环遍历转发器中的项目,并使用FindControl方法根据您指定的ID查找下拉列表。
foreach(RepeaterItem item in repeater1.Items) {
DropDownList dropdown = (DropDownList)item.FindControl("DropDownList1")
//dropdown.SelectedValue
}
编辑:根据您的评论,我不会将下拉列表重命名为您数据库中的ID。相反,你应该在你的转发器中放置一个隐藏的文字控件。将其值设置为数据库记录的ID。然后以获得下拉列表值的方式获取ID。
(Literal)item.FindControl("ListeralWithDataBaseId")
您的aspx标记将如下所示
<asp:Literal runat="server" id="ListeralWithDataBaseId"
Value='<%# Eval("Id")' %> Visible="false" />
答案 1 :(得分:0)
我发现将PlaceHolder放在Repeater中最简单,然后在设计时创建DropDownList控件,而不是尝试在设计时创建一个控件并在迭代时更改ID。