2011-03-01 58 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來更新您的數據::