日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

GridView编辑删除操作

發(fā)布時間:2025/3/20 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 GridView编辑删除操作 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

? 第一種:使用DataSource數(shù)據(jù)源中自帶的編輯刪除方法,這樣的不經(jīng)常使用,在這里就不加說明了。

? 另外一種:使用GridView的三種事件:GridView1_RowEditing(編輯)、GridView1_RowUpdating(更新)、GridView1_RowCancelingEdit(取消編輯)。GridView1屬性中將DataKeyNames的值設(shè)置為主鍵名,否則找不到索引,這個非常重要哦。

該方法有2種操作,一種是不正確綁定列轉(zhuǎn)換為模板列,第二種是轉(zhuǎn)換為模板列。

?

這里先說不轉(zhuǎn)換為模板列的情況;

?

首先;先對GridView進行數(shù)據(jù)綁定,無論用代碼綁定還是DataSource綁定都能夠。綁定好后,對GridView加入�綁定列 和編輯列 (注意這里,加入�好后不做不論什么修改,千萬不要將它們轉(zhuǎn)換為模板列),加入�好后,將所要綁定的數(shù)據(jù)庫表字段填入 屬性中。

然后,分別激活上述提到的三種事件,然后加入�代碼:

protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)

{ //運行刪除

string str = "delete from tb_hby where id='"+GridView1.DataKeys[e.RowIndex].Value.ToString()+"'";

??? db.Delete(str); //db是操作類的實例,Delete是刪除數(shù)據(jù)的方法

this.GridView1.DataBind();

}

protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)

{//運行更新

?? ?string cell1 = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[1].Controls[0])).Text.ToString().Trim();//第一列注意這樣的寫法非常重要

?? ??string cell2 = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[2].Controls[0])).Text.ToString().Trim();//第二列注意這樣的寫法非常重要

???? string str = "update tb_hby set hby_title='" + cell1 + "',hby_Datetime='" + cell2 + "' where id='" + GridView1.DataKeys[e.RowIndex].Value.ToString() + "'";

??????? db.Update(str);//db是操作類的實例,Update是更新數(shù)據(jù)的方法

??????? GridView1.EditIndex = -1;

??????? GView();

}

protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)

?{//激活編輯button的事件

??????? this.GridView1.EditIndex = e.NewEditIndex;

??????? GView();

?}

protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)

??? {//取消編輯狀態(tài)的事件

??????? GridView1.EditIndex = -1;

??????? GView();

}

說明:此方法中,如果要求某個綁定列不做編輯,則在它的前臺代碼中添�ReadOnly=”true”就可以。

此方法有一些缺點,比方對日期列進行格式化時,顯示的時候是格式化后的日期,可是在編輯狀態(tài)下仍然顯示出日期的原貌,還有,某一列的字符太長時,不好對它進行字符截取。

在點擊刪除button的時候,假設(shè)須要一個彈出刪除提示,則要將刪除列轉(zhuǎn)化為模板列,其代碼例如以下:

<ItemTemplate>

? <asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="False" CommandName="Delete" OnClientClick="return confirm('確定要刪除嗎?')"??????????????????? ?Text="刪除"></asp:LinkButton>

</ItemTemplate>

也能夠這樣寫:

在RowDataBind事件中:

if (e.Row.RowType == DataControlRowType.DataRow)

?? ?????{

??????????? LinkButton lnkdelete = (LinkButton)e.Row.FindControl("lnkdelete");

??????????? lnkdelete.Attributes.Add("onclick","return confirm('您確定要刪除嗎?')");

??????? }

假設(shè)不轉(zhuǎn)化為模板列,這這樣寫:

if (e.Row.RowType == DataControlRowType.DataRow)

??????? {

?????? ?????if (e.Row.RowState == DataControlRowState.Normal || e.Row.RowState == DataControlRowState.Alternate)

??????????? {

??????????????? //((LinkButton)e.Row.Cells[7].Controls[0]).Attributes.Add("onclick", "javascript:return confirm('你確認要刪除:\"" + e.Row.Cells[0].Text + "\"嗎?')");

??????????????? ((LinkButton)e.Row.Cells[7].Controls[0]).Attributes.Add("onclick", "javascript:return confirm('你確認要刪除嗎?')");

??????????? }

??????? }

完整代碼例如以下:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="id" OnRowDeleting="GridView1_RowDeleting" OnRowEditing="GridView1_RowEditing" OnRowCancelingEdit="GridView1_RowCancelingEdit" OnRowUpdating="GridView1_RowUpdating">

??????????? <Columns>

??????????????? <asp:BoundField DataField="id" HeaderText="id" InsertVisible="False" ReadOnly="True"? SortExpression="id" />

?

??????????????? <asp:BoundField DataField="hby_Title" HeaderText="hby_Title"? SortExpression="hby_Title" AccessibleHeaderText="fgfg" />

?

??????????????? <asp:BoundField DataField="hby_Datetime" DataFormatString="{0:HH:mm}"? />

??????????????? <asp:CommandField ShowEditButton="True" />

??????????????? <asp:TemplateField ShowHeader="False">

??????????????????? <ItemTemplate>

??????????????????????? <asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="False" CommandName="Delete" OnClientClick="return confirm('確定要刪除嗎?')"

??????????????????????????? Text="刪除"></asp:LinkButton>

??????????????????? </ItemTemplate>

??????????????? </asp:TemplateField>

??????????? </Columns>

??????? </asp:GridView>

?

后臺代碼:

public partial class Default3 : System.Web.UI.Page

{

??? DBconn db = new DBconn();

??? protected void Page_Load(object sender, EventArgs e)

??? {

??????? if (!Page.IsPostBack)

??????? {

??????????? GView();

??????? }

??? }

?

??? private void GView()

??? {

??????? string strbind = "select id,hby_title,hby_Datetime from tb_hby order by id desc";

??????? this.GridView1.DataSource = db.getDataSet(strbind);

??????? this.GridView1.DataBind();

??? }

??? protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)

??? {

??????? string str = "delete from tb_hby where id='"+GridView1.DataKeys[e.RowIndex].Value.ToString()+"'";

??????? db.Delete(str);

??????? this.GridView1.DataBind();

??? }

??? protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)

??? {

??????? this.GridView1.EditIndex = e.NewEditIndex;

??????? GView();

??? }

??? protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)

??? {

??????? string cell1 = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[1].Controls[0])).Text.ToString().Trim();//第一列

??????? string cell2 = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[2].Controls[0])).Text.ToString().Trim();//第二列

??????? string str = "update tb_hby set hby_title='" + cell1 + "',hby_Datetime='" + cell2 + "' where id='" + GridView1.DataKeys[e.RowIndex].Value.ToString() + "'";

??????? db.Update(str);//db是操作類的實例,Update是更新數(shù)據(jù)的方法

??????? GridView1.EditIndex = -1;

??????? GView();

??? }

??? protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)

??? {

??????? GridView1.EditIndex = -1;

??????? GView();

??? }

}

?

?

下面是對綁定列轉(zhuǎn)換為模板列的操作(包含將編輯列和刪除列都轉(zhuǎn)化為模板列):

private void GView()

{//綁定數(shù)據(jù)源

?? string strbind = "select top 15 id,hby_title,hhhhh,hby_Datetime from tb_hby";

?? this.GridView1.DataSource = db.getDataSet(strbind);

?? this.GridView1.DataBind();

}

protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)

{//運行刪除

?? string str = "delete from tb_hby where id='"+GridView1.DataKeys[e.RowIndex].Value.ToString()+"'";

?? db.Delete(str);

??? //GView();

??? Response.Write("<script language='JavaScript'>");

??? Response.Write("alert('刪除成功!');location.href='default3.aspx';");

??? Response.Write("</script>");

?}

?protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)

?{//激活編輯

??????? this.GridView1.EditIndex = e.NewEditIndex;

??????? GView();

?}

?protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)

?{//運行更新

string EditTitle = ((TextBox)(GridView1.Rows[e.RowIndex].FindControl("TextBox1"))).Text.ToString().Trim();

?? string DateTimestr = ((TextBox)(GridView1.Rows[e.RowIndex].FindControl("TextBox2"))).Text;//注意:日期字段不要加ToString(),否則會報錯,而nvarchar和int的字段能夠加

??? string hhh = ((TextBox)(GridView1.Rows[e.RowIndex].FindControl("TextBox3"))).Text.ToString();

?? string str = "update tb_hby set hby_title='" +EditTitle + "',hby_Datetime='" + DateTimestr + "',hhhhh='"+hhh+"' where id='" + GridView1.DataKeys[e.RowIndex].Value.ToString() + "'";

?? db.Update(str);

?? GridView1.EditIndex = -1;

?? GView();

?}

?

這里千萬要注意

當對綁定列轉(zhuǎn)換為模板列了之后,編輯列這樣寫:

string EditTitle = ((TextBox)(GridView1.Rows[e.RowIndex].FindControl("TextBox1"))).Text.ToString().Trim();

不轉(zhuǎn)化為模板列的時候,編輯列這樣寫:

string EditTitle = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[1].Controls[0])).Text.ToString().Trim();

?

這里easy搞錯,以致常常發(fā)生疑惑。

protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)

?{//取消編輯狀態(tài)

??????? GridView1.EditIndex = -1;

??????? GView();

?}

?

下面是前臺代碼:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="id" OnRowDeleting="GridView1_RowDeleting" OnRowEditing="GridView1_RowEditing" OnRowCancelingEdit="GridView1_RowCancelingEdit" OnRowUpdating="GridView1_RowUpdating">

??????????? <Columns>

??????????????? <asp:BoundField DataField="id" HeaderText="id" InsertVisible="False" ReadOnly="True"

??????????????????? SortExpression="id" />

??????????????? <asp:TemplateField AccessibleHeaderText="fgfg" HeaderText="hby_Title" SortExpression="hby_Title">

??????????????????? <EditItemTemplate>

??????????????????????? <asp:TextBox ID="TextBox1" runat="server" Text='<%# Eval("hby_Title") %>'></asp:TextBox>

??????????????????? </EditItemTemplate>

??????????????????? <ItemTemplate>

??????????????????????? <asp:Label ID="Label1" runat="server" Text='<%# Eval("hby_Title") %>'></asp:Label>

?????????????? ?????</ItemTemplate>

??????????????? </asp:TemplateField>

??????????????? <asp:TemplateField>

??????????????????? <EditItemTemplate>

??????????????????????? <asp:TextBox ID="TextBox2" runat="server" Text='<%#? Eval("hby_Datetime", "{0:HH:mm}") %>'></asp:TextBox>

??????????????????? </EditItemTemplate>

??????????????????? <ItemTemplate>

??????????????????????? <asp:Label ID="Label2" runat="server" Text='<%# Eval("hby_Datetime", "{0:HH:mm}") %>'></asp:Label>

??????????????????? </ItemTemplate>

?????????????? ?</asp:TemplateField>

??????????????? <asp:TemplateField HeaderText="好">

??????????????????? <EditItemTemplate>

??????????????????????? <asp:TextBox ID="TextBox3" runat="server" Text='<%# Bind("hhhhh") %>'></asp:TextBox>

??????????????????? </EditItemTemplate>

??????????????????? <ItemTemplate>

??????????????????????? <asp:Label ID="Label3" runat="server" Text='<%# Bind("hhhhh") %>'></asp:Label>

??????????????????? </ItemTemplate>

??????????????? </asp:TemplateField>

??????????????? <asp:TemplateField ShowHeader="False">

??????????????????? <EditItemTemplate>

?????????????? ?????????<asp:LinkButton ID="LkBtnUpdate" runat="server" CausesValidation="True" CommandName="Update"

??????????????????????????? Text="更新"></asp:LinkButton>

??????????????????????? <asp:LinkButton ID="LkBtnCtrl" runat="server" CausesValidation="False" CommandName="Cancel"

??????????????????????????? Text="取消"></asp:LinkButton>

??????????????????? </EditItemTemplate>

??????????????????? <ItemTemplate>

???????????????????????? <img src="img/edt.gif" /><asp:LinkButton ID="LinkButton2" runat="server" CausesValidation="False" CommandName="Edit"

??????????????????????????? Text="編輯"></asp:LinkButton>

??????????????????? </ItemTemplate>

???????? ???????</asp:TemplateField>

??????????????? <asp:TemplateField ShowHeader="False" HeaderText="刪除">

??????????????????? <ItemTemplate>

?????????????????????? <asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="False" CommandName="Delete" OnClientClick="return confirm('確定要刪除嗎?')"

??????????????????????????? Text="刪除"></asp:LinkButton>

??????????????????? </ItemTemplate>

??????????????? </asp:TemplateField>

??????????? </Columns>

??????? </asp:GridView>

?

以上綁定中,不管是Eval或者Bind都能夠。

?

?

? 第三種方法:將編輯和顯示都放在模板列中,代碼例如以下:

前臺綁定:

<asp:TemplateField HeaderText="出團日期">

??? <ItemTemplate>

????? <asp:TextBox ID="tbx_ctrq" runat="server" Text='<%# Eval("cspd_ctrq") %>' Visible="false"></asp:TextBox>

????? <asp:Label ID="lbl_ctrq" runat="server" Text='<%# Eval("cspd_ctrq") %>'></asp:Label>

?? </ItemTemplate>

? <ControlStyle Width="84px" />

</asp:TemplateField>

<asp:TemplateField HeaderText="價格">

?? <ItemTemplate>

?? <asp:TextBox ID="tbx_price" runat="server" Text='<%# Eval("cspd_price") %>' Visible="false"></asp:TextBox>

?? <asp:Label ID="lbl_price" runat="server" Text='<%# Eval("cspd_price") %>'></asp:Label>

?</ItemTemplate>

? <ControlStyle Width="60px" />

</asp:TemplateField>

?

<asp:TemplateField HeaderText="編輯" ShowHeader="False">

? <ItemTemplate>

??? <asp:LinkButton ID="LB_edit" runat="server" CausesValidation="False" CommandArgument='<%# ((GridViewRow) Container).RowIndex %>' CommandName="iEdit" Text="編輯"></asp:LinkButton>

???<asp:LinkButton ID="LB_upd" runat="server" CausesValidation="True" CommandName="iUpdate"

?????? Visible="false" CommandArgument='<%# ((GridViewRow) Container).RowIndex %>' Text="更新"></asp:LinkButton>

? ?<asp:LinkButton ID="LB_cancel" runat="server" CausesValidation="False" CommandName="iCancel" Visible="false" CommandArgument='<%# ((GridViewRow) Container).RowIndex %>' Text="取消"></asp:LinkButton>

? </ItemTemplate>

</asp:TemplateField>

<asp:TemplateField HeaderText="刪除">

??<ItemTemplate>

?? <asp:LinkButton ID="LB_Del" runat="server" OnClientClick="return confirm('確定要刪除嗎?')"

?????? CommandName="Delete" Text="刪除"></asp:LinkButton>

? </ItemTemplate>

</asp:TemplateField>

?

?

后臺代碼例如以下:

protected void GV_Main_RowCommand(object sender, GridViewCommandEventArgs e)

??? {

??????? if (e.CommandName == "iEdit")

??????? {

??????????? int rowIndex = Convert.ToInt32(e.CommandArgument);

??????????? ((LinkButton)GV_Main.Rows[rowIndex].FindControl("LB_edit")).Visible = false;

??????????? ((LinkButton)GV_Main.Rows[rowIndex].FindControl("LB_upd")).Visible = true;

??????????? ((LinkButton)GV_Main.Rows[rowIndex].FindControl("LB_cancel")).Visible = true;

?

??????????? ((Label)GV_Main.Rows[rowIndex].FindControl("lbl_chanpin")).Visible = false;

??????????? ((TextBox)GV_Main.Rows[rowIndex].FindControl("tbx_chanpin")).Visible = true;

?

??????????? ((Label)GV_Main.Rows[rowIndex].FindControl("lbl_ctrq")).Visible = false;

??????????? ((TextBox)GV_Main.Rows[rowIndex].FindControl("tbx_ctrq")).Visible = true;

??????? }

??????? if (e.CommandName == "iCancel")

??????? {

??????????? int rowIndex = Convert.ToInt32(e.CommandArgument);

??????????? ((LinkButton)GV_Main.Rows[rowIndex].FindControl("LB_edit")).Visible = true;

??????????? ((LinkButton)GV_Main.Rows[rowIndex].FindControl("LB_upd")).Visible = false;

??????????? ((LinkButton)GV_Main.Rows[rowIndex].FindControl("LB_cancel")).Visible = false;

?

? ??????????((Label)GV_Main.Rows[rowIndex].FindControl("lbl_chanpin")).Visible = true;

??????????? ((TextBox)GV_Main.Rows[rowIndex].FindControl("tbx_chanpin")).Visible = false;

?

??????????? ((Label)GV_Main.Rows[rowIndex].FindControl("lbl_ctrq")).Visible = true;

??????????? ((TextBox)GV_Main.Rows[rowIndex].FindControl("tbx_ctrq")).Visible = false;

??????? }

??????? if (e.CommandName == "iUpdate")

??????? {

??????????? int rowIndex = Convert.ToInt32(e.CommandArgument);

??????????? if (!wpf.IsNum(((TextBox)GV_Main.Rows[rowIndex].FindControl("tbx_price")).Text.Trim()))

??????????? {

??????????????? Page.ClientScript.RegisterStartupScript(this.GetType(), "Startup", "<script>alert('價格必須是數(shù)字!');</script>");

??????????? }

???????????? string strupd = "UPDATE [tb_cspd] SET [cspd_chanpin] = '" + wpf.checkStr(((TextBox)GV_Main.Rows[rowIndex].FindControl("tbx_chanpin")).Text.Trim()) + "', [cspd_ctrq] = '" + wpf.checkStr(((TextBox)GV_Main.Rows[rowIndex].FindControl("tbx_ctrq")).Text.Trim()) + "', WHERE [id] = " + GV_Main.DataKeys[rowIndex][0].ToString();

?

??????????????? //Response.Write(strupd);

??????????????? wpf.SqlQuery(strupd);

??????????????? GV_Main.DataBind();

??????????? }

??????? }

}

?

?

?

點擊編輯button后統(tǒng)一列在文本框中進行編輯:

效果:

首先還是在GridView1屬性中DataKeyNames的值設(shè)置為主鍵名

前臺代碼:

<asp:GridView ID="GridView3" runat="server" AutoGenerateColumns="False" OnRowCommand="GridView3_RowCommand" DataKeyNames="News_Id">

??????????????????????? <Columns>

??????????????????????????? <asp:BoundField DataField="News_Title" HeaderText="標題" />

?????????? ?????????????????<asp:BoundField DataField="News_Source" HeaderText="來源" />

??????????????????????????? <asp:BoundField DataField="News_Date" HeaderText="日期" />

??????????????????????????? <asp:TemplateField HeaderText="編輯">

?????????????????????????????? ?<ItemTemplate>

??????????????????????????????????? <asp:LinkButton ID="LkBtnbianji" runat="server" CommandName="edit_ok" CommandArgument='<%# ((GridViewRow) Container).RowIndex? %>'>編輯</asp:LinkButton>

??????????????????????????????? </ItemTemplate>

???? ???????????????????????</asp:TemplateField>

??????????????????????? </Columns>

??????????????????? </asp:GridView>

?

后臺代碼:

private void GView3()

??? {

??????? string strbind = "select News_Id,News_Title,News_Source,News_Date from tb_News";

??????? this.GridView3.DataSource = db.getDataSet(strbind);

??????? this.GridView3.DataBind();

??? }

??? protected void GridView3_RowCommand(object sender, GridViewCommandEventArgs e)

??? {

??????? if (e.CommandName == "edit_ok")

??????? {

??????????? int rowIndex = Convert.ToInt32(e.CommandArgument);

??????????? string strbind = "select News_Id,News_Title,News_Source,News_Date from tb_News where News_Id=" + GridView3.DataKeys[rowIndex][0].ToString();

??????????? DataRow dr = db.getDataSet(strbind).Tables[0].Rows[0];

????? ??????this.BunAdd.CommandArgument = GridView3.DataKeys[rowIndex][0].ToString();

??????????? this.TextTitle.Text = dr["News_Title"].ToString();

??????????? this.TextType.Text=dr["News_Source"].ToString();

??????????? this.TextDatetime.Text = dr["News_Date"].ToString();

??????? }

??? }

??? protected void BunAdd_Click(object sender, EventArgs e)

??? {

??????? string up = "update tb_News set News_Title='" + this.TextTitle.Text.Trim() + "',News_Source='" + this.TextType.Text.Trim() + "',News_Date='" + this.TextDatetime.Text.Trim() + "' where News_Id="+BunAdd.CommandArgument;

??????? db.Update(up);

??????? GView3();

??? }

總結(jié)

以上是生活随笔為你收集整理的GridView编辑删除操作的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。