GridView编辑删除操作 (转载)

第一种:使用DataSource数据源中自带的编辑删除方法,这种不常用,在这里就不加说明了。

第二种:使用GridView的三种事件:GridView1_RowEditing(编辑)、GridView1_RowUpdating(更新)、GridView1_RowCancelingEdit(取消编辑)。GridView1属性中将DataKeyNames的值设置为主键名,否则找不到索引,这个很重要哦。

该方法有2种操作,一种是不对绑定列转换为模板列,另外一种是转换为模板列。

这里先说不转换为模板列的情况;

首先;先对GridView进行数据绑定,不管用代码绑定还是DataSource绑定都可以。绑定好后,对GridView添加绑定列 和编辑列 (注意这里,添加好后不做任何改动,千万不要将它们转换为模板列),添加好后,将所要绑定的数据库表字段填入 属性中。

然后,分别激活上述提到的三种事件,然后添加代码:

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是删除数据的方法

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是更新数据的方法

GridView1.EditIndex = -1;

GView();

}

protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)

{//激活编辑按钮的事件

this.GridView1.EditIndex = e.NewEditIndex;

GView();

}

protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)

{//取消编辑状态的事件

GridView1.EditIndex = -1;

GView();

}

说明:此方法中,如果要求某个绑定列不做编辑,则在它的前台代码中加入ReadOnly=”true”即可。

此方法有一些缺点,比如对日期列进行格式化时,显示的时候是格式化后的日期,但是在编辑状态下仍然显示出日期的原貌,还有,某一列的字符太长时,不好对它进行字符截取。

在点击删除按钮的时候,如果需要一个弹出删除提示,则要将删除列转化为模板列,其代码如下:

<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(‘您确定要删除吗?‘)");

}

如果不转化为模板列,这这样写:

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是更新数据的方法

GridView1.EditIndex = -1;

GView();

}

protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)

{

GridView1.EditIndex = -1;

GView();

}

}

以下是对绑定列转换为模板列的操作(包括将编辑列和删除列都转化为模板列):

private void GView()

{//绑定数据源

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();

}

这里千万要注意:

当对绑定列转换为模板列了之后,编辑列这样写:

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

不转化为模板列的时候,编辑列这样写:

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

这里容易搞错,以致经常发生疑惑。

protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)

{//取消编辑状态

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(‘价格必须是数字!‘);</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();

}

}

}

点击编辑按钮后统一列在文本框中进行编辑:

效果:

首先还是在GridView1属性中将DataKeyNames的值设置为主键名

前台代码:

<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();

}

转载地址:http://blog.csdn.net/yl_99/article/details/6921686

GridView编辑删除操作 (转载)

时间: 2024-10-19 06:09:52

GridView编辑删除操作 (转载)的相关文章

GridView编辑删除操作

第一种:使用DataSource数据源中自带的编辑删除方法,这样的不经常使用,在这里就不加说明了. 另外一种:使用GridView的三种事件:GridView1_RowEditing(编辑).GridView1_RowUpdating(更新).GridView1_RowCancelingEdit(取消编辑).GridView1属性中将DataKeyNames的值设置为主键名,否则找不到索引,这个非常重要哦. 该方法有2种操作,一种是不正确绑定列转换为模板列,第二种是转换为模板列. 这里先说不转换

GridView编辑删除

1 A前台代码 2 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="test.aspx.cs" Inherits="Maticsoft.Web.CarRentWeb.test" %> 3 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "

GridView总结二:GridView自带编辑删除更新

GridView自带编辑删除更新逻辑很简单:操作完,重新绑定.总结总结,防止忘记... 效果图: 前台代码: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="gridView_bianjidelete.aspx.cs" Inherits="gridView_bianjidelete" %> <!DOCTYPE html> <html

JSON相关知识,转载:删除JSON中数组删除操作

一:JSON是什么 JSONg格式:对象是一个无序的“名称/值”对的集合. 对象以括号开始,括号结束. 名称冒号分隔值. "名称/值"之间用逗号分隔 例: var people = {     "programmers": [{         "firstName": "Brett",         "lastName": "McLaughlin",         "em

Asp.Net MVC +EntityFramework主从表新增编辑操作的实现(删除操作怎么实现?)

Asp.Net MVC +EntityFramework主从表新增编辑操作的实现 对于MVC中同时对主从表的表单操作在网上现有的解决很少,而这样的操作在做业务系统中是经常为遇到的.我在网上搜索了很久都没有发现很完整的实例或非常好的解决方案,所以我很想和大家讨论一下又什么更好的解决方案. 一旦有更好的方式我会把它集成到模板中实现自动生成.所以很希望得到大家的帮助.在这里我先抛砖引玉了. Demo代码在 https://github.com/neozhu/MVC5-Scaffolder 下载 先看一

SQl Server误编辑删除数据,操作撤回

SQl Server误编辑删除数据,操作撤回 操作撤回 select?*?into?..?遇到大表咋办? 建议用? begin?tran ??update?...??--更新 ??select?...??--确认 ? ? commit?tran?--提交 或 rollback?tran?--回滚

GridView内容详解(转载)

GridView内容详解(转载) GridView是ASP.NET界面开发中的一个重要的控件,对GridView使用的熟练程度直接影响软件开发的进度及功能的实现.(车延禄)GridView的主要新特性:    1.与DataSource控件结合实现了显示与数据操作的分离,大大减化了代码的编写量;    2.实现"双向绑定",无需手动检索数据.    2.在列的类型上新增了CheckBoxField和ImageField两个类型列;    3.对排序和分页可以实现异步操作;    4.对

SqlServer中的merge操作(转载)

SqlServer中的merge操作(转载) 今天在一个存储过程中看见了merge这个关键字,第一个想法是,这个是配置管理中的概念吗,把相邻两次的更改合并到一起.后来在technet上搜索发现别有洞天,原来是另外一个sql关键字,t-sql的语法还是相当地丰富的.本篇是一篇学习笔记,没有什么新意,这里给出technet上的地址连接供大家参考权威:http://technet.microsoft.com/zh-cn/library/bb510625.aspx,这里具体的语法不去深究了,只是把几个例

ASP.NET MVC3 实例(六) 增加、修改和删除操作(二)

http://www.jquery001.com/asp.net-mvc3-instance-add-update-delete2.html 上篇我们在 ASP.NET MVC3 中实现了添加操作,由于时间关系没有完成修改.删除操作,我们新建了一个名为"Contact"的 Controller,并实现了添加方法,下边就让我们在此基础上来完成 ASP.NET MVC3 中的修改和删除操作. 首先,我们在 Contact 控制器类中添加一个名为 View()的方法,用来从 Contact