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,點擊該按鈕才會進入編輯狀態,改成別的名字是不會進入編輯狀態的
結果: