Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 未设置标签ASP_C#_Asp.net - Fatal编程技术网

C# 未设置标签ASP

C# 未设置标签ASP,c#,asp.net,C#,Asp.net,我有一个通过转发器动态生成的标签,rollNo是itemTemplate的一部分。当我检查l的值时,它进入if块,但l.Text仍然为空。选中。文本仅返回“d”。为什么? 您的代码示例不完整,因为它没有rollNo,但我可以告诉您一些事情。。。 您正在使用repeater,并且使用模板…您在模板中使用的id永远不会是任何控件的运行时id!想想看!假设您将rollNo分配给模板中的一个元素,并且有10行要传递给中继器。您是否希望有10个控件具有相同的idrollNo?!我希望不是! 因此,在模板内

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


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

中继器标记:

<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
    }
}

哦,这个rollNo标签是一个data.Eval参数。我在加载页面时将数据加载到repeater中。您可以发布repeater标记吗?是的,找到了,在repeater中使用OnItemCommand解决了它。代码作为答案发布在下面。感谢有一个asp:Repeater结束标记,在写答案时没有嵌入到文本中。希望任何读过这篇文章的人都会忘记它,这段代码隐藏在Repeater的OnItemCommand函数中
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
    }
}