刚才在调整网站友情链接管理页面,里面有个简单的GridView。因为更改了架构,所以需要手工给GridView编写编辑、删除等事件。最近也经常碰到有人问我GridView的问题,于是写成经验之书以警后人。
前两者的代码比较固定,一般都是:
代码如下 | 复制代码 |
protected void gvFriendLink_RowEditing(object sender, GridViewEditEventArgs e) |
2. 在RowUpdating事件中的取值问题
2.1 取不到值
如果你直接访问GridView.Row[i].Cell[j].Text是没用的。因为在编辑模式下,这个Cell里其实是有控件的,在这个例子里是个TextBox。所以我们需要强制类型转换一下:
代码如下 | 复制代码 |
protected void gvFriendLink_RowUpdating(object sender, GridViewUpdateEventArgs e) |
如果你在GridView编辑的时候,明明填写了新值,更新之后却不变,比如单元格里原先是abc,你编辑的时候写了abcd,走到更新事件中,获取的值还是abc。这时候你要检查,你是不是忘记判断页面PostBack了?
解决办法:把数据绑定方法写在if(!Page.IsPostBack)里面
代码如下 | 复制代码 |
protected void Page_Load(object sender, EventArgs e) |
做删除操作,我们只要编写RowDeleting事件就可以:
代码如下 | 复制代码 |
protected void gvFriendLink_RowDeleting(object sender, GridViewDeleteEventArgs e) |
细心的童鞋会发现,在刚才的删除事件中,我获取主键的方法非常傻逼,居然是直接访问Cells[1],也就是第二个单元格的值。但很多时候,项目里要求GridView上不能显示数据库中的主键字段,怎么办呢?
其实GridView自带访问主键的属性,叫做DataKey。
然后在代码里你就可以访问某行对应的主键了:
代码如下 | 复制代码 |
int id = Convert.ToInt32(gvFriendLink.DataKeys[e.RowIndex].Value); |
我的友情链接模块没有这个需求,所以给贴一个以前做的选课系统里的例子:
代码如下 | 复制代码 |
protected void gvCourses_SelectedIndexChanged(object sender, EventArgs e) |
一般是一个Select Command:
代码如下 | 复制代码 |
<asp:CommandField ShowSelectButton="True" /> |
电神魔傀2街机免费版 官方版v1.2.1
下载三国战纪2手游腾讯渠道服 安卓版v2.41.0.0
下载三国战纪2手游抖音渠道服 安卓版v2.41.0.0
下载三国战纪2折扣服 安卓版v2.41.0.0
下载叫我大掌柜小米版 安卓版v7.4.4
叫我大掌柜小米版是这款模拟经营类手游的渠道服版本,在此版本中
cooking fever正版 安卓最新版v23.0.2
cooking fever正版是一款非常好玩的模拟经营类手游
咖啡厅的生活故事 最新版v1.7
咖啡厅的生活故事是一款模拟经营游戏,玩家们在游戏中可以经营一
迅猛龙模拟器金币不减反增版 v1.1.8
迅猛龙模拟器无限金币版是一款动物模拟类游戏,玩家们将在游戏中
泽塔奥特曼升华器免广告版 v1.4
泽塔奥特曼升华器去广告版是游戏的破解版本,在该版本中为玩家去