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

結果:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM