标签ASP未设置

时间:2014-05-09 22:54:37

标签: c# asp.net

我有一个通过转发器动态生成的标签,rollNo是一个标签,它是itemTemplate的一部分。当我检查l的值时,它进入if块但是l.Text仍为空。 check.Text只返回“d”。为什么呢?

        Label l = (Label)item.FindControl("rollNo");
        TextBox t = (TextBox)item.FindControl("quiz1");
        if (l != null)
        {
            string a = l.Text;
            check.Text = "d"+a;
        }

2 个答案:

答案 0 :(得分:1)

您的代码示例尚未完成,因为其中没有 rollNo ,但我可以告诉您一些事情...... 您正在使用转发器并使用模板...您在模板中使用的ID永远不会是您的任何控件的运行时ID!想一想!假设您已将 rollNo 分配给模板中的某个元素,并且您有10行要传递给转发器。您是否希望拥有10个具有相同ID rollNo 的控件?!我希望不是! 因此,在模板中使用id时,FindControl将不返回任何内容... 你必须重新考虑你想要什么或使用不同的方法来找到控件(循环)......

答案 1 :(得分:0)

转发器加价:

<asp:Repeater id="Repeater1" runat="server" OnItemCommand="Repeater1_ItemCommand">
    <ItemTemplate>
         <tr onclick="rowReturn(this)">
             <td><asp:Label CssClass="form-control" runat="server" ID="rollNo"><%# DataBinder.Eval(Container.DataItem, "sid") %></asp:Label></td>
             <td><asp:TextBox CssClass="form-control" runat="server" ID="quiz1" required></asp:TextBox></td>
             <td><asp:TextBox CssClass="form-control" runat="server" ID="quiz2" required></asp:TextBox></td>
             <td><asp:Button CssClass="btn btn-success btn-sm form-control" ID="add" CommandName="add" runat="server" Text="Add" CommandArgument='<%#DataBinder.Eval(Container.DataItem, "sid") %>' /></td>
         </tr>
    </ItemTemplate>

代码背后:

TextBox t1;
TextBox t2;
string rollNumber, T1, T2;
if (e.CommandName == "add")
{
    // get CommandArgument you have selected on the button
    string roll = e.CommandArgument.ToString();
    rollNumber = roll;
    foreach (RepeaterItem item in Repeater1.Items)
    {
        t1 = (TextBox)item.FindControl("quiz1");
        t2 = (TextBox)item.FindControl("quiz2");
        T1 = t1.Text;
        T2 = t2.Text;
        //...DB code or any other code
    }
}