2013-05-06 71 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标记申报事件。