【问题标题】:Can't populate update parameters from a ListView's ItemTemplate无法从 ListView 的 ItemTemplate 填充更新参数
【发布时间】:2011-07-06 18:55:16
【问题描述】:

我正在使用 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 函数,它简单地隐藏/显示带有 readonlyedit 类名的 DIVs。在LinkButtonSave_Click 中,我从TexBoxName 获取值,但它始终包含绑定的原始值,而不是在texbox 中输入的编辑值。

  • ASP.NET 是否不会回发文本框值,因为它位于 ItemTemplate 中,还是其他原因导致了此问题?
  • 我可以使用中继器来代替吗?

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      当使用 javascript 来改变状态时,你必须使用 ajax 来更新你的数据::

      【讨论】:

        猜你喜欢
        • 2015-08-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多