【全球速看料】删除数据的方法:GridView1_RowingEdit
第一种:使用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)
{//激活编辑button的事件
this.GridView1.EditIndex = e.NewEditIndex;
GView();
}
protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
{//取消编辑状态的事件
GridView1.EditIndex = -1;
GView();
}
说明:此方法中,如果要求某个绑定列不做编辑,则在它的前台代码中增加ReadOnly=”true”就可以。
此方法有一些缺点,比方对日期列进行格式化时,显示的时候是格式化后的日期,可是在编辑状态下仍然显示出日期的原貌,还有,某一列的字符太长时,不好对它进行字符截取。
在点击删除button的时候,假设须要一个弹出删除提示,则要将删除列转化为模板列,其代码例如以下:
也能够这样写:
在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("你确认要删除吗?")");
}
}
完整代码例如以下:
Text="删除">
后台代码:
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();
这里easy搞错,以致常常发生疑惑。
protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
{//取消编辑状态
GridView1.EditIndex = -1;
GView();
}
下面是前台代码:
SortExpression="id" />
Text="更新">
Text="取消">
Text="编辑">
Text="删除">
以上绑定中,不管是Eval或者Bind都能够。
第三种方法:将编辑和显示都放在模板列中,代码例如以下:
前台绑定:
Visible="false" CommandArgument="<%# ((GridViewRow) Container).RowIndex %>" Text="更新">
CommandName="Delete" Text="删除">
后台代码例如以下:
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();
}
}
}
点击编辑button后统一列在文本框中进行编辑:
效果:
首先还是在GridView1属性中将DataKeyNames的值设置为主键名
前台代码:
后台代码:
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();
}
标签:
相关推荐:
最新新闻:
- 【全球速看料】删除数据的方法:GridView1_RowingEdit
- 如何设计自己的多媒体展陈?多媒体展陈设计原理|今日视点
- OA系统高性能解决方案 通达OA系统的整体优化方案:天天速读
- 扫地机器人开机充电还是关机充电器?科沃斯地宝的充电时长 报道
- 官方下载产品特点:优化的字、词调整算法 提高词汇输入准确率|世界观察
- 官方下载产品特点:优化的字、词调整算法 提高词汇输入准确率-环球讯息
- 基于ASP的建站开源系统有哪些?国内ASP开源建站系统一览
- 家用净水器什么牌子好?十大家用净水器品牌排行榜|当前独家
- 焦点速看:bosemini音响怎么样?bosemini音响有哪些特点?
- 歪歪马甲的分类及颜色是什么?歪歪头像分类及颜色说明
- 黑莓8830怎么样?黑莓8830手机评测相关介绍
- YY语音如何使用YY号登录?YY语音使用YY号登录方法
- 肥东一中2021高考成绩查询 肥东一中隆重举行2021届高考励志报告会
- 全球简讯:汽车空气净化器怎么选?车载臭氧空气净化器选购方法介绍
- word2010的分节符及分页符在哪里?分节符以及分页符位置介绍
- 自定义控件GDI绘制在主程序报错System怎么解决?_热门看点
- 【并行开发】mpjdaemon批处理命令中的问题分析_世界快资讯
- 怎么安装directx 11.1?设置安装directx 11.1步骤
- 物业总裁卖股记
- 当前速讯:罗技G100S游戏鼠标对比谁才是最强王者?罗技g100和g100s区别介绍
- 今日起 Win7/Win8.1彻底与大家说再见了|全球快资讯
- 如何将电脑显示屏呈现出淡绿色的颜色?保护眼睛的电脑设置步骤
- 我的文档位置在哪?我的文档被删除了怎么恢复?
- 环球速看:酷派怎么刷机?酷派刷机教程大全
- 风力发电机原理是什么?风力发电机原理详解
- 实时:Unity显示印度语异常 如何纠正错误的印度文?
- Trojan.Win32怎么彻底删除?Trojan.Win32清除方法步骤
- 百度指数是什么意思ne ?其中的数值又代表什么?:世界微速讯
- reactnative开发环境安装androidstudio 安装问题如下:环球微动态
- ADSL是什么?使用ADSL宽带上网的方法及说明
- dell家用笔记本电脑推荐 dell家用笔记本哪款好?
- QQExternal.exe是什么进程?QQExternal.exe进程删除步骤
- windows防火墙打不开怎么办?windows防火墙打不开是怎么回事?
- 谷歌搜索打不开如何处理?三种谷歌搜索打不开的解决方法
- 笔记本液晶屏维修方法是什么?液晶屏的软排线撕坏了怎么办?
- 【快播报】什么是翻盖手机?诺基亚翻盖机两款推荐
- 怎么激活office2015?永久激活Office2015的方法
- 笔记本键盘出现错乱怎么办?电脑键盘错乱完美解决-全球快讯
- kingsoft是什么文件夹?kingsoft删除影响wps使用吗?
- 今日最新!如何使用maxdos工具给电脑备份系统?maxdos工具备份系统操作教程
- 磁碟机病毒是什么?电脑磁碟机病毒要如何查杀?
- 全球快报:从源代码到二进制行程序 C语言的编译过程是怎样的?
- 苹果手机怎么下载游戏?苹果手机下载游戏的操作步骤:视焦点讯
- 苹果手机自带测距仪在哪里?苹果手机测距仪怎么使用?
- dnf按键连发怎么设置?红眼x连发如何设置几秒合适?
- “多玩LOL盒子”被封杀 腾讯将这款软件定义为第三方软件 速讯
- 热门看点:诺基亚3230怎么刷机?诺基亚3230刷机的方法步骤
- Protel99SE怎么使用?Protel99SE的基本教程详细步骤
- 如何做日期比较判断的方法?ASP.net中时间比较的方法 DateTime.Compare()_全球热门
- 缓存文件是什么 缓存文件删了有什么影响?
- word2010的分节符及分页符在哪里?分节符以及分页符位置介绍
- 怎么安装directx 11.1?设置安装directx 11.1步骤
- 我的文档位置在哪?我的文档被删除了怎么恢复?
- 风力发电机原理是什么?风力发电机原理详解
- Trojan.Win32怎么彻底删除?Trojan.Win32清除方法步骤
- ADSL是什么?使用ADSL宽带上网的方法及说明
- QQExternal.exe是什么进程?QQExternal.exe进程删除步骤
- windows防火墙打不开怎么办?windows防火墙打不开是怎么回事?
- 谷歌搜索打不开如何处理?三种谷歌搜索打不开的解决方法
- 笔记本液晶屏维修方法是什么?液晶屏的软排线撕坏了怎么办?
- 怎么激活office2015?永久激活Office2015的方法
- kingsoft是什么文件夹?kingsoft删除影响wps使用吗?
- 磁碟机病毒是什么?电脑磁碟机病毒要如何查杀?
- dnf按键连发怎么设置?红眼x连发如何设置几秒合适?
- Protel99SE怎么使用?Protel99SE的基本教程详细步骤
- 缓存文件是什么 缓存文件删了有什么影响?
- qq垃圾文件怎样请理?qqprotect.exe进程怎样结束?
- NppTools.dll是什么文件?NppTools.dll文件丢失了怎么办?
- 如何解决Windows Installer错误?InstMsiW.exe安装及常见问题解答
- cscript.exe是什么?cscript.exe自动启动解决方法
- 韩国游客称在日本遭芥末袭击 怀疑厨师故意为之
- 《战神5》交互设计师加盟《神奇女侠》游戏团队
- 《F1车队经理2022》销量超60万 但仍低于预期
- 《英雄连3》最终技术测试本周开启 全员皆可参与:新动态
- 代购“印度神药”,骗子比药还多 每日聚焦
- 北回归线能扛起旅游复苏的大旗吗?
- 年货节白菜价秒杀: 2TB固态硬盘仅需599元
- AMD锐龙7000智酷版上架:6核仅需1549元_天天新动态
- 环球速讯:苹果或于6月前发布AR/VR头戴产品 号称取代iPhone
- 【速看料】恐怖压抑!《中国奇谭》"鹅鹅鹅"导演早期作品曝光
- MOD作者将《最后的生还者》真人艾莉加到游戏中
- 劳斯莱斯销量爆棚,创119年历史最高销售记录_焦点报道
- “妖镍”之后又有新冲击?“镍王”青山据称增产
- 环球关注:摩根大通:做空太疯狂,我们将步入科技股主导的逼空
- 达美航空美国境内WiFi免费|每日聚焦