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