Asp.net 更改中继器内部的网络控制ID >

Asp.net 更改中继器内部的网络控制ID >,asp.net,web-controls,Asp.net,Web Controls,这大概就是我要做的。显然,这个实现是有缺陷的,但我找不到任何关于如何在实践中做到这一点的信息。感谢您的帮助 编辑:我要做的就是为这个转发器中的每个项目添加一个DropDownList,在提交表单时,使用每个Yes/No答案的ID输入数据库。我使用的SqlDataReader有两个字段:问题内容和问题ID。我认为最好在中继器中使用内置的ID支持。如果目标是为其分配一个ID,以便在数据绑定后轻松找到适当的控件,则可以尝试以下操作: <ItemTemplate> <asp:L

这大概就是我要做的。显然,这个实现是有缺陷的,但我找不到任何关于如何在实践中做到这一点的信息。感谢您的帮助


编辑:我要做的就是为这个转发器中的每个项目添加一个DropDownList,在提交表单时,使用每个Yes/No答案的ID输入数据库。我使用的SqlDataReader有两个字段:问题内容和问题ID。

我认为最好在中继器中使用内置的ID支持。如果目标是为其分配一个ID,以便在数据绑定后轻松找到适当的控件,则可以尝试以下操作:

<ItemTemplate>
    <asp:Label runat="server"><%#DataBinder.Eval(Container.DataItem, "Question")%></asp:Label>
    <asp:DropDownList runat="server" id="<%#DataBinder.Eval(Container.DataItem, "QuestionID")%>">>
        <asp:ListItem value="1" text="Yes" />
        <asp:ListItem value="0" text="No" />
    </asp:DropDownList>
<ItemTemplate>
中继器基本上由一组中继器组成。RepeaterItems是使用ItemTemplate标记指定的。每个RepeaterItem都有自己的一组控件,根据中继器的本质,这些控件相互关联


假设您正在从数据库中提取中继器数据。每个Repeater项表示查询结果中单个行的数据。因此,如果您将QuestionID分配给标签,将QuestionName分配给DropDownList,则标签中的ID将与下拉列表中的名称匹配。

我认为您最好在中继器中使用内置的ID支持。如果目标是为其分配一个ID,以便在数据绑定后轻松找到适当的控件,则可以尝试以下操作:

<ItemTemplate>
    <asp:Label runat="server"><%#DataBinder.Eval(Container.DataItem, "Question")%></asp:Label>
    <asp:DropDownList runat="server" id="<%#DataBinder.Eval(Container.DataItem, "QuestionID")%>">>
        <asp:ListItem value="1" text="Yes" />
        <asp:ListItem value="0" text="No" />
    </asp:DropDownList>
<ItemTemplate>
中继器基本上由一组中继器组成。RepeaterItems是使用ItemTemplate标记指定的。每个RepeaterItem都有自己的一组控件,根据中继器的本质,这些控件相互关联


假设您正在从数据库中提取中继器数据。每个Repeater项表示查询结果中单个行的数据。因此,如果将QuestionID分配给标签,将QuestionName分配给DropDownList,则标签中的ID将与下拉列表中的名称匹配。

是否可以从标记文件中删除控件,并钩住中继器的onItemDataBound事件。在这种情况下,您应该能够“手动”创建下拉控件,分配您想要的任何ID。

您是否可以从标记文件中删除该控件,并钩住中继器的onItemDataBound事件。在这种情况下,您应该能够“手动”创建下拉控件,分配您想要的任何ID。

您不能给控件这样的动态ID。告诉我们你想做什么(为什么它需要一个动态ID?),我们可以回答这个问题。干杯,你不能给控件这样的动态ID。告诉我们你想做什么(为什么它需要一个动态ID?),我们可以回答这个问题。Cheers加载表单时,我需要将ID设置为每条记录的QuestionID,这样我就可以在存储过程中使用这些ID和相应的值。这很简单。如果为每个标签/textbox/etc分配一个ID,并将QuestionID添加为隐藏标签,则可以使用RepeaterItem的FindControl方法访问这些控件。好的,我现在必须阅读有关FindControl的更多信息。我试图理解如何将隐藏标签的ID与关联的DropDownList关联。我编辑了我的答案,以尝试更好地回答您的问题。加载表单时,我需要将ID设置为每条记录的QuestionID,以便我可以在存储过程中使用这些ID和相应的值。这非常简单。如果为每个标签/textbox/etc分配一个ID,并将QuestionID添加为隐藏标签,则可以使用RepeaterItem的FindControl方法访问这些控件。好的,我现在必须阅读有关FindControl的更多信息。我试图理解如何将隐藏标签的ID与相关的DropDownList关联起来。我编辑了我的答案,试图更好地回答您的问题。
foreach (RepeaterItem curItem in Repeater1.Items)
{
    // Due to the way a Repeater works, these two controls are linked together.  The questionID
    // label that is found is in the same RepeaterItem as the DropDownList (and any other controls
    // you might find using curRow.FindControl)
    var questionID = curRow.FindControl("QuestionID") as Label;
    var myDropDownList = curRow.FindControl("MyDropDownList") as DropDownList;
}