Repeater html值始终采用最后一项的值

时间:2015-08-19 11:00:10

标签: c# asp.net repeater

您好我正在使用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两者,所有转发器文本框都采用&#34; intType&#34;值是最后一项的值。但是;

   txtProperty.Attributes.Add("Class", "data_input");

行可以正常使用。只有&#34; labelType&#34;对我来说可变的问题。谢谢

1 个答案:

答案 0 :(得分:1)

抱歉,但这不起作用。

&lt; %%&gt;代码块是在c#代码运行后的运行时编译的。所以你改变了labelType,然后运行asp代码块,标签类型是它改变的最后一件事。

要使它工作,你可以改变实现它的方式,也许可以将代码隐藏块写入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");
}