我有以下代码:
<%for (int index = 1; index < 7; ++index) {%>
<tr>
<td>
<div class="indicacao_gdp">
<asp:TextBox ReadOnly="true" ID="inp_txt_indicacao_<%= index %>" CssClass="inp_txt_indicacao" runat="server" MaxLength="12"></asp:TextBox>
</div>
</td>
<td>
<div class="codigo_debito_credito_gdp">
<asp:TextBox ReadOnly="true" ID="inp_txt_codigo_debito_credito_<%= index %>" CssClass="inp_txt_codigo_debito_credito" runat="server" MaxLength="2"></asp:TextBox>
</div>
</td>
<td>
<div class="descricao_debito_credito_gdp">
<asp:TextBox ReadOnly="true" ID="inp_txt_descricao_debito_credito_<%= index %>" CssClass="inp_txt_descricao_debito_credito" runat="server" MaxLength="2"></asp:TextBox>
</div>
</td>
<td>
<div class="valor_debito_credito_gdp">
<asp:TextBox ReadOnly="true" ID="inp_txt_valor_debito_credito_inteiro_<%= index %>" CssClass="inp_txt_valor_inteiro" runat="server" MaxLength="8"></asp:TextBox>
,
<asp:TextBox ReadOnly="true" ID="inp_txt_valor_debito_credito_decimal_<%= index %>" CssClass="inp_txt_valor_decimal" runat="server" MaxLength="2"></asp:TextBox>
</div>
</td>
</tr>
<%}%>
但是,代码无效......
Parser Error Message: 'inp_txt_indicacao_<%= index %>' is not a valid identifier.
我是怎么解决的?
答案 0 :(得分:2)
使用PlaceHolder
控件并从代码隐藏中动态添加TextBox
控件。在代码隐藏中,您可以轻松设置ID以及您喜欢的任何其他属性。
请参阅MSDN: Add Controls to an ASP.NET Web Page Programmatically。
答案 1 :(得分:1)
你为什么需要这样做?如果使用runat =“server”,控件将永远不会具有相同的ID。如果将这些文本框包装在带有类的容器中,则可以通过jQuery轻松地从这些元素中获取数据。
答案 2 :(得分:0)
当你使用runat =&#34; server&#34;你正在创建.net对象而不是实际的html。
您有两个选项,您可以使用Repeater并将ID设置为ID =&#34; inp_txt_indicacao&#34; (.net将把它变得独一无二)。
或者不要使用&lt; asp:TextBox来定期
<input type="textbox" id="inp_txt_indicacao_<%= index %>" />
<强>中继器强>
网上有很多很好的教程,但现在很快就能理解。
要使用转发器,您需要将数据放入某种列表中。
Public Class TestClass
Public Sub New(ByVal v1 As String, ByVal v2 As String)
Value1 = v1
Value2 = v2
End Sub
Public Property Value1() As String
Public Property Value2() As String
End Class
Dim tc As New List(Of TestClass)
tc.Add(New TestClass("aa", "bb"))
tc.Add(New TestClass("cc", "dd"))
tc.Add(New TestClass("ee", "ff"))
您只需将数据绑定到转发器
rpData.DataSource = tc
rpData.DataBind()
<asp:Repeater ID="rpData" runat="server">
<HeaderTemplate>
<table>
<tr>
<th>Header 1</th>
<th>Header 2</th>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td><asp:TextBox ID="txtValue1" Text='<%# Bind("Value1") %>' runat="server" /></td>
<td><asp:TextBox ID="txtValue2" Text='<%# Bind("Value2") %>' runat="server" /></td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>