更改Repeater内部的WebControl属性

时间:2009-05-18 19:03:06

标签: asp.net

我有一个转发器控件,其中包含一个包含数据绑定标签和DropDownList控件的ItemTemplate。每次迭代时,我都想在每次迭代时更改DropDownList的ID,以便在提交时将值用作输入。谁能告诉我这通常是怎么做的?感谢。

2 个答案:

答案 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。