asp.net gridview 实现编辑

首先,了解几个有关的属性

GridView.AutoGenerateEditButton = true  会自动在gridview控件生成编辑按钮,点击“编辑”(自动生成的)时,还会出现更新按钮和取消按钮

OnRowEditing : 是一个编辑事件,点击编辑按钮会执行该函数里的内容

 

我不想使用自动生成的编辑按钮,所以没使用AutoGenerateEditButton属性。

前端:

<asp:GridView ID="GridView1" runat="server" OnRowEditing="GridView1_RowEditing" OnRowDataBound="GridView1_RowDataBound" AutoGenerateColumns="false">
<Columns>
<asp:TemplateField HeaderText="工号" >
<ItemTemplate><%#Eval("id")%></ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="姓名" >
<ItemTemplate><%#Eval("name")%></ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="基本工资" >
<ItemTemplate>
<asp:Label ID="basicwage" runat="server" Text='<%#Eval("basicwage")%>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="basicwage" runat="server" CssClass="textbox" Text='<%#Eval("basicwage")%>'></asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="福利" >
<ItemTemplate>
<asp:Label ID="welfare" runat="server" Text='<%#Eval("welfare")%>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="welfare" runat="server" CssClass="textbox" Text='<%#Eval("welfare")%>'></asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="奖金" >
<ItemTemplate>
<asp:Label ID="bonus" runat="server" Text='<%#Eval("bonus")%>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="bonus" runat="server" CssClass="textbox" Text='<%#Eval("bonus")%>'></asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="全职奖" >
<ItemTemplate>
<asp:Label ID="allwork" runat="server" Text='<%#Eval("allwork")%>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="allwork" runat="server" CssClass="textbox" Text='<%#Eval("allwork")%>'></asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="罚金" >
<ItemTemplate>
<asp:Label ID="pena" runat="server" Text='<%#Eval("pena")%>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="pena" runat="server" CssClass="textbox" Text='<%#Eval("pena")%>'></asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="缺勤罚款" >
<ItemTemplate>
<asp:Label ID="absenwork" runat="server" Text='<%#Eval("absenwork")%>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="absenwork" runat="server" CssClass="textbox" Text='<%#Eval("absenwork")%>'></asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="税率" >
<ItemTemplate>
<asp:Label ID="tax" runat="server" Text='<%#Eval("tax")%>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="tax" runat="server" CssClass="textbox" Text='<%#Eval("tax")%>'></asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="实际工资" >
<ItemTemplate>
<asp:Label ID="factwage" runat="server" Text='<%#Eval("factwage")%>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="factwage" runat="server" CssClass="textbox" Text='<%#Eval("factwage")%>'></asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="操作">
<ItemTemplate>
<asp:LinkButton ID="editbtn" runat="server" CommandName="EDit" Text="编辑" ></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>

后台:

protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
this.GridView1.EditIndex = e.NewEditIndex;    //使编辑的行是当前操作的行   editIndex:编辑行的索引  newEditIndex:所编辑的行的索引
}

注意:在前端代码中,一定要在asp:TemplateField中加上EditItemTemplate,因为,处于编辑状态就是让你的当前行处于EditItemTemplate里的内容。

所以:我在EditItemTemplate中让数据放在textbox中;

asp:LinkButton ID="editbtn"  中的   CommandName="EDit"  ;CommandName要为EDit,点击该按钮才会进入编辑状态,改成别的名字是不会进入编辑状态的

结果:

猜你喜欢

转载自www.cnblogs.com/shiyuzuxia/p/9009973.html
今日推荐