2011-03-01 59 views
0

我正在使用ListView,并且想要在客户端实现从只读模式切换到ListView项目的编辑模式。 Inline form editing on client side无法从ListView的ItemTemplate中填充更新参数

我试图做到这一点的东西,如::

<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函数,只是隐藏/显示DIV s的的只读编辑一些的,这是在讨论 classnames。在LinkButtonSave_Click中,我从TexBoxName获得值,但它始终包含绑定的原始值,而不是在texbox中输入的编辑值。

  • ASP.NET不回发文本框的值,因为它在ItemTemplate中,或者是其他的东西导致这个问题吗?
  • 我可以用Repeater来完成这个吗?

回答

0

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

1

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