2010-11-19 84 views
0

我有一個綁定列列GridView和相當多的項目模板,如下所示:如何在處理OnRowEditing時在ASP.NET GridView中獲取單元格內容?

<asp:GridView ID="gvUsers" runat="server" AutoGenerateColumns="False" OnRowCommand="gvUsers_RowCommand" 
OnRowDataBound="gvUsers_RowDataBound" DataKeyNames="UserId" OnRowEditing="gvUsers_OnRowEditing" 
OnRowUpdating="gvUsers_OnRowUpdating" OnRowUpdated="gvUsers_OnRowUpdated" 
    DataSourceID="DataSource1" Width="807px" Height="105px" 
    AllowPaging="True" > 
<Columns> 
    <asp:BoundField DataField="UserName" HeaderText="User Name" 
     SortExpression="UserName" /> 
    <asp:TemplateField HeaderText="Approver"> 
     <ItemTemplate> 
      <asp:CheckBox ID="cbApprover" runat="server" Enabled="false" /> 
     </ItemTemplate> 
    </asp:TemplateField> 
    <asp:TemplateField HeaderText="Auditor"> 
     <ItemTemplate> 
      <asp:CheckBox ID="cbAuditor" runat="server" Enabled="false" /> 
     </ItemTemplate> 
    </asp:TemplateField> 
    <asp:TemplateField> 
     <ItemTemplate> 
      <asp:LinkButton ID="btnEdit" runat="server" 
       CommandArgument='<%# Eval("UserName") %>' CommandName="Edit" Text="Edit" /> 
      <asp:Label ID="lblPipe1" runat="server" Text=" | " /> 
      <asp:LinkButton ID="btnUpdate" runat="server" 
       CommandArgument='<%# Eval("UserName") %>' CommandName="Update" Text="Update" /> 
      <asp:Label ID="lblPipe" runat="server" Text=" | " /> 
      <asp:LinkButton ID="btnDelete" runat="server" 
       CommandArgument='<%# Eval("UserName") %>' CommandName="Remove" 
       OnClientClick="return confirm('Are you sure you want to delete this user?');" 
       Text="Delete" /> 
     </ItemTemplate> 
    </asp:TemplateField> 
</Columns> 

雖然處理的編輯鏈接按鈕,我需要在綁定列使用的值,用戶名。不幸的是,在OnRowEditing處理程序中,所有字符串都是空的「」。這在接下來的OnRowDataBound處理程序中也是如此,其中e.Row.RowState == DataControlRowState.Edit。在用戶點擊Edit鏈接並開始OnRowEditing事件後,有沒有辦法獲得這個值?

回答

1

我到達的解決方案比我希望的要複雜一點。以後我會告訴代碼,但我做了以下內容:

  1. 創建一個HiddenField持有我想在 其視圖狀態編輯單元格的
    值。
  2. 在OnRowDataBound處理程序中,我將該值分配給了HiddenField的
  3. ItemTemplate,如上所示,發送用戶名作爲 參數。我將這個值存儲在HiddenField的 中。
  4. OnRowEditing在命令處理程序後觸發。這是我在 閱讀HiddenField的地方。

如果有人有一個更簡單的解決方案,我很樂意聽到它。

0

難道你在沒有EditItemTemplates的情況下在TemplatedItems中使用晚期綁定?