无法从ListView的ItemTemplate中填充更新参数

时间:2011-03-01 19:57:42

标签: asp.net listview repeater client-side listviewitem

我正在使用ListView,并希望在客户端实现从只读模式切换到ListView项目的编辑模式。其中一些讨论在:Inline form editing on client side

我试图通过以下方式来做到这一点:

<asp:ListView ID="ListViewContactNumber" runat="server">
    <LayoutTemplate>
        <table cellpadding="0" cellspacing="0">
            <asp:PlaceHolder ID="itemPlaceholder" runat="server"></asp:PlaceHolder>
        </table>
    </LayoutTemplate>
    <ItemTemplate>
        <div class="readonly">
            <asp:Label ID="LabelType" runat="server" 
                Text='<%# Server.HtmlEncode(Eval("Name").ToString()) %>'></asp:Label>
            <a href="#" onclick="switchState(this,"edit");return false;">Edit</a>
        </div>
        <div class="edit">
            <asp:TextBox ID="TextBoxName" runat="server"
                Text='<%# Eval("Name") %>'
                MaxLength="256"
                Columns="10"></asp:TextBox>
            <asp:LinkButton ID="LinkButtonSave" runat="server"
                Text="Save"
                OnClick="LinkButtonSave_Click"></asp:LinkButton>
            <a href="#" onclick="switchState(this,"readonly");return false;">Cancel</a>
        </div>
    </ItemTemplate>
</asp:ListView>

switchState是一个Javascript函数,只使用 readonly edit 类名隐藏/显示DIV s。在LinkButtonSave_Click中,我从TexBoxName获取值,但它始终包含绑定的原始值,而不是在texbox中输入的已编辑值。

  • ASP.NET是否不回发文本框值,因为它位于ItemTemplate中,还是导致此问题的其他原因?
  • 我可以使用Repeater来完成此任务吗?

2 个答案:

答案 0 :(得分:1)

使用javascript更改状态时,必须使用ajax更新数据::

答案 1 :(得分:0)

事实证明,ListView根本不是问题的根源。我在Page_Load上重新数据绑定而不检查它是否是回发。