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,点击该按钮才会进入编辑状态,改成别的名字是不会进入编辑状态的
结果: