Repeater html 值始终采用最后一项的值
Repeater html values always taking last item's value
您好,我正在使用 asp 转发器作为列表项的特殊文本框,并使用 div 来提供警报文本框类型(数字或字符串等)这里是 html;
<asp:Repeater ID="rptProperties" runat="server" DataSourceID="dsProperties" OnItemDataBound="rptProperties_ItemDataBound">
<ItemTemplate>
<li>
<div class="form_title"><%# Eval("ad_en")%> </div>
<div class="form_content" id="fk_<%# Eval("id")%>">
<asp:HiddenField runat="server" ID="hdnPropertyID" Value='<%# Eval("id") %>' />
<asp:TextBox runat="server" ID="txtProperty"></asp:TextBox>
<div class="alert">
<%= labelType %>
</div>
<div class="select_box" runat="server" id="divSelectBox">
<asp:DropDownList runat="server" ID="ddlProperty" CssClass="data_select">
<asp:ListItem>Select</asp:ListItem>
</asp:DropDownList>
</div>
</div>
</li>
</ItemTemplate>
</asp:Repeater>
这是隐藏代码;
if (id!=130)
{
txtProperty.Attributes.Add("Class", "data_input");
labelType = GetLocalResourceObject("stringType").ToString();
}
else
{
labelType = GetLocalResourceObject("intType").ToString();
}
即使代码触发 if 和 else 两者,所有转发器文本框都采用 "intType" 值,即最后一项的值。但是;
txtProperty.Attributes.Add("Class", "data_input");
line 工作正常,如我所愿。对我来说只有 "labelType" 个变量问题。谢谢
抱歉,这行不通。
<% %> 代码块在 c# 代码 运行 之后编译 运行 次。因此,您更改了 labelType,之后 asp 代码块 运行s 和标签类型是它最后更改的内容。
要使其正常工作,您可以更改实现它的方式,也许将该代码隐藏块写入 asp 块。
<div class="alert">
<%= Convert.ToInt32(Eval("id")) != 130 ? GetLocalResourceObject("stringType").ToString() : GetLocalResourceObject("intType").ToString() %>
</div>
并将代码隐藏更改为
if (id!=130)
{
txtProperty.Attributes.Add("Class", "data_input");
}
您好,我正在使用 asp 转发器作为列表项的特殊文本框,并使用 div 来提供警报文本框类型(数字或字符串等)这里是 html;
<asp:Repeater ID="rptProperties" runat="server" DataSourceID="dsProperties" OnItemDataBound="rptProperties_ItemDataBound">
<ItemTemplate>
<li>
<div class="form_title"><%# Eval("ad_en")%> </div>
<div class="form_content" id="fk_<%# Eval("id")%>">
<asp:HiddenField runat="server" ID="hdnPropertyID" Value='<%# Eval("id") %>' />
<asp:TextBox runat="server" ID="txtProperty"></asp:TextBox>
<div class="alert">
<%= labelType %>
</div>
<div class="select_box" runat="server" id="divSelectBox">
<asp:DropDownList runat="server" ID="ddlProperty" CssClass="data_select">
<asp:ListItem>Select</asp:ListItem>
</asp:DropDownList>
</div>
</div>
</li>
</ItemTemplate>
</asp:Repeater>
这是隐藏代码;
if (id!=130)
{
txtProperty.Attributes.Add("Class", "data_input");
labelType = GetLocalResourceObject("stringType").ToString();
}
else
{
labelType = GetLocalResourceObject("intType").ToString();
}
即使代码触发 if 和 else 两者,所有转发器文本框都采用 "intType" 值,即最后一项的值。但是;
txtProperty.Attributes.Add("Class", "data_input");
line 工作正常,如我所愿。对我来说只有 "labelType" 个变量问题。谢谢
抱歉,这行不通。
<% %> 代码块在 c# 代码 运行 之后编译 运行 次。因此,您更改了 labelType,之后 asp 代码块 运行s 和标签类型是它最后更改的内容。
要使其正常工作,您可以更改实现它的方式,也许将该代码隐藏块写入 asp 块。
<div class="alert">
<%= Convert.ToInt32(Eval("id")) != 130 ? GetLocalResourceObject("stringType").ToString() : GetLocalResourceObject("intType").ToString() %>
</div>
并将代码隐藏更改为
if (id!=130)
{
txtProperty.Attributes.Add("Class", "data_input");
}