2013-05-06 70 views
0

我有一個GridView,其中包含模板字段內的鏈接按鈕。代碼如下所示:更新按鈕上的GridView行點擊

<asp:GridView ID="gv1" runat="server" AutoGenerateColumns="False" 
    DataSourceID="SqlDataSource1" onrowediting="gv1_RowEditing" 
     onrowcommand="gv1_RowCommand"> 
     <Columns> 
      <asp:BoundField DataField="inDetailsId" HeaderText="inDetailsId" 
       SortExpression="inDetailsId" /> 
      <asp:BoundField DataField="inUserId" HeaderText="inUserId" 
       SortExpression="inUserId" /> 
      <asp:TemplateField> 
       <ItemTemplate> 
        <asp:LinkButton ID="lnk1" runat="server" Text='<%# Eval("attDate")%>' CommandName="Edit"></asp:LinkButton> 
       </ItemTemplate> 
      </asp:TemplateField> 
      <asp:BoundField DataField="attstatus" HeaderText="attstatus" 
       SortExpression="attstatus" /> 
      <asp:BoundField DataField="inAttendanceStatusId" 
       HeaderText="inAttendanceStatusId" SortExpression="inAttendanceStatusId" /> 
     </Columns> 

    </asp:GridView> 
    <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
    ConnectionString="<%$ ConnectionStrings:LearnConnectionString %>" 
    SelectCommand="SELECT * FROM [attendance]"></asp:SqlDataSource> 
    <asp:Button ID="Button1" runat="server" Text="Button" /> 

的隱藏代碼如下:

protected void gv1_RowCommand(object sender, GridViewCommandEventArgs e) 
     { 
      gv1.EditIndex = 1; 
     } 

在點擊鏈接按鈕,我設置的GridView編輯指數爲1,以使該行編輯。

現在我想保存更新的行。點擊網頁上的另一個按鈕,我想保存更新的更改並將行編輯模式更改爲不可編輯模式。

回答

1

要做到這一點,最好的辦法是用具體的事件,像這樣:

protected void gridview1_RowEditing(object sender, GridViewEditEventArgs e) 
{ 
    gridview1.EditIndex = e.NewEditIndex; 
    BindGrid(); 
} 

protected void gridview1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e) 
{ 
    gridview1.EditIndex = -1; 
    BindGrid(); 
} 

要保存使用事件RowUpdating:

protected void gridview1_RowUpdating(object sender, GridViewUpdateEventArgs e) 
{     
    GridViewRow row = gridview1.Rows[e.RowIndex]; 
    int id = Convert.ToInt32(gridview1.DataKeys[e.RowIndex].Value); 
    string name = ((DropDownList)(row.Cells[2].Controls[1])).SelectedValue; 

    //call save method of your business layer 

    gridview1.EditIndex = -1; 
    BindGrid(); 
} 

記得在GridView標記申報事件。