Gridview中几个Button的应用
gridview中有三种方式添加button的应用,CommandField、ButtonField、TemplateField中加Button这三种方式。三种方式都可以实现同样的功能,但在实现某些功能时,实现方法是不一样的,下面我们来介绍一下:
一、获取选中行的某个字段值
1、模板中加Button,利用CommandArgument绑定数据库中某个字段。
A、首先,模板Button设置commandname为一个值例如“selectid”,绑定CommandArgument到数据库一个字段,CommandArgument='<%# Bind("shqxdj") %>'。
然后,在页面的源里,找到Gridview的代码,加入程序名OnRowCommand="GridView1_RowCommand"。让页面能找到执行程序的名字。
<asp:GridView ID="GridView1" runat="server" DataKeyNames="pid" DataSourceID="SqlDataSource1" OnRowCommand="GridView1_RowCommand">
然后在后台cs代码加入:
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "selectid")
{
Label1.Text = e.CommandArgument.ToString();
}
}
B、前面一种方法是通过Button的Commandname,在GridView中的RowCommand中的加入点击后要执行的命令,这跟ButtonField是一样的形式,模板中Button还有另一种执行点击命令的方法,就是直接写Button_Click事件,就像一般的Button一样。
<asp:TemplateField HeaderText="用户类别选择"> <ItemTemplate> <asp:Label ID="LByhdj" runat="server" Text='<%# Bind("shqxmc") %>' Width="45px"></asp:Label> <asp:Button ID="BTNxzyh" runat="server" Font-Size="9pt" Text="选择具体用户" OnClick="BTNxzyh_Click" CommandArgument='<%# Bind("shqxdj") %>' /> </ItemTemplate> </asp:TemplateField>
protected void BTNxzyh_Click(object sender, EventArgs e) { this.TXTtest.Text = ((Button)sender).CommandArgument.ToString();
}
2、可以首先获取Button当前行的Index值,然后根据Index值取得当前行某列的值,或当前行DataKeys来获取数据。
A、ButtonField控件中加CommandName属性
aspx页面:
<asp:ButtonField ButtonType="Button" HeaderText="退报名" Text="退报名"CommandName="Btcxtbm" />
CS页面:
protected void GVxkall_RowCommand(object sender, GridViewCommandEventArgs e) { int rowIndex = Int32.Parse((String)e.CommandArgument); if (e.CommandName == "Bttkall") { string m_whfs, m_xsxh, m_xq, m_lbdm, m_message; int m_kcxh; m_whfs = "学分制选课"; m_xq = (string)ViewState["xkxq"]; m_xsxh = (string)ViewState["xsxh"]; m_kcxh = 0; m_lbdm = GVxkall.DataKeys[rowIndex].Values[0].ToString(); SqlParameter[] parameters = new SqlParameter[5]; parameters[0] = new SqlParameter("@_whfs", m_whfs); parameters[1] = new SqlParameter("@_xh", m_xsxh); parameters[2] = new SqlParameter("@_xq", m_xq); parameters[3] = new SqlParameter("@_lbdm", m_lbdm); parameters[4] = new SqlParameter("@_kcxh", m_kcxh); DataSet dsalltk = DbHelperSQL.RunProcedure("pr_gx_ty_tx", parameters, "alltkmp"); m_message = dsalltk.Tables["alltkmp"].Rows[0]["message"].ToString(); this.Response.Write(" <script language=javascript>alert('" + m_message + "'); </script> "); BindView6GVxkall(); } }
注意:1、这里注意一下,只有ButtonField控件时,在GVxkall_RowCommand(object sender, GridViewCommandEventArgs e)事件中,e.CommandArgument中才会记录当前行的index值,而如果是模板中Button,是不会自动记录当前行的Index值,你只能像前面第1个写的那样,手动的为模板中的Button加入CommandArgument属性。
如果要想点击模板列中的Button,想获取当前行的RowIndex刚需要:
1.RowDataBound,把行号邦定到按钮的属性上:btn.Attributes["id"] = (e.Row.RowIndex) 2.gridview里面的按钮点击时,执行RowCommand
在这个事件里面e,转换成按钮,拿到(e as Button).Attributes["id"]
2、如果是在HeaderTemplate或FooterTemplate添加Button,如果不给这个Button加CommandArgument属性,因为点击它也要触发Gridview的RowCommand事件,因为RowCommand事件中有 int rowIndex = Int32.Parse((String)e.CommandArgument);这句话,而那Button中没有CommandArgument属性就会报错,解决方法就是给这个Button加CommandArgument属性,而且是int型的,如 <FooterTemplate> <asp:Button ID="BTNshjbxg" runat="server" OnClick="BTNshjbxg_Click" Text="修改审核级别" CommandArgument="0" /> </FooterTemplate>
这样就可以解决了,其实也可以把int rowIndex = Int32.Parse((String)e.CommandArgument)这句放在每个if判断里面,这样就不会一开始就去执行它,也就不会报错。
为了统一格式,便于查看,GridView中所有的Button都可以加CommandName 属性,然后在RowCommand事件中编写Button点击后的命令,而不用再写Button_Click事件了。
protected void GVshjb_RowCommand(object sender, GridViewCommandEventArgs e) { int rowIndex = Int32.Parse((String)e.CommandArgument); if (e.CommandName == "Xzyh") { //this.TXTtest.Text = GVshjb.DataKeys[rowIndex].Values[0].ToString(); this.TXTtest.Text = e.CommandArgument.ToString(); int m_shqxdj = int.Parse(e.CommandArgument.ToString()); string m_zcdm = ""; string m_whfs = "按权限等级查询教师信息";
SqlParameter[] parameters = new SqlParameter[3]; parameters[0] = new SqlParameter("@_whfs", m_whfs); parameters[1] = new SqlParameter("@_dm", m_shqxdj); parameters[2] = new SqlParameter("@_zcdm", m_zcdm);
DataSet dslcnew = DbHelperSQL.RunProcedure("pr_jsdm_sele", parameters, "nlcmp");
this.GVqxdjyh.DataSource = dslcnew; this.GVqxdjyh.DataBind();
} }
Gridview中几个Button的应用的更多相关文章
- GridView中使用如下button OnClientClick代码会出现解析错误
在GridView中使用如下代码会出现解析错误: <asp:LinkButton ID="DeleteButton" runat="server" Cau ...
- Android中ListView中有button,checkbox,GridView时事件问题
最近做项目,用到了listview的item的一些问题,现在抽空把它们总结一下: 转载请表明出处:http://blog.csdn.net/wdaming1986/article/details/67 ...
- GridView中的GridView1_RowCommand事件
GridView1_RowCommand事件是GridView中生成事件时激发 比如说页面中有一个按钮给他设置CommandName属性 <asp:Button ID="btnCheH ...
- GridView中 LinkButton两种方式
<asp:TemplateField HeaderText="操作" ShowHeader="False"> <ItemTemplate> ...
- asp.net中父子页面通过gridview中的按钮事件进行回传值的问题
这两天写BS程序,遇到父子页面传值的问题,以前没写过web系统,用了几天时间才将问题解决,总结下记录下来: 问题描述: 父页面A中有一个gridview,每行6个列,有5列中均有一个按钮,单击按钮,会 ...
- Js获取Gridview中Dropdownlist选中状态
在Gridview中加入Dropdownlist模板列,加入DropDownlist 是一种常用的操作,其中涉及到如何获取选择项和Gridview重新绑定两个要点. 如图 前台代码如下 <%@ ...
- GridView中的编辑和删除按钮,执行更新和删除代码之前的更新提示或删除提示
在GridView中,可以通过设计界面GridViewr任务->编辑列->CommandField,很简单的添加的编辑和删除按钮 在前台源码中,可以看到GridView自动生成了两个列. ...
- ListView中的组件Button的OnClick事件触发时机
Android开发时,ListView中的组件Button的OnClick事件必须在ListView之外的组件事件触发后才能触发? 此处ListView无OnItemClick事件,而且ListVie ...
- 获取GridView中RowCommand的当前索引行(转)
获取GridView中RowCommand的当前索引行 前台添加一模版列,里面添加一个LinkButton 前台 (如果在后台代码中用e.CommandArgument取值的话前台代码就必须在按钮中设 ...
随机推荐
- eclipse中的classes文件夹同步问题
问题: 在同步项目时,由于误操作将classes文件夹加入到了同步版本中,这样会导致每次更新程序编译后,会有很多class文件显示在同步清单中. 解决方案: 将classes文件不设置为同步. 1. ...
- maven配置远程仓库
1,当中央仓库无法满足要求时,可能项目需要的构件存在另一个远程仓库中.可以在POM文件中配置该仓库.代码如下: <project> ...... <repositories> ...
- Java实现比较版本号
涉及到客户端的系统中经常需要用到比较版本号的功能,但是比较版本号又不能完全按照字符串比较的方式去用compareTo之类的方法: 这就需要我们总结版本号的通用规则,设计一个比较算法并封装成通用方法来使 ...
- Eclipse 各版本版本号代号对应一览表
版本号 代号 日期 Eclipse 3.1 IO [木卫一,伊奥] 2005 Eclipse 3.2 Callisto [木卫四,卡里斯托] 2006 Eclipse 3.3 Eruopa ...
- linux下vmware的安装、物理分区使用及卸载
1.安装 先下载安装文件VMware-Workstation-Full-12 在命令行下执行下载的文件安装即可(需要root权限) wget https://download3.vmware.com/ ...
- mac pods 安装
CocoaPods的安装步骤: 1.先配置Ruby环境: 若已安装Ruby,请升级Ruby环境 sudo gem update --system 若没有安装,则请看下面, 以下代码区域,带有 $ 打头 ...
- ffmpeg-201612[01,08,10,17,21,27,30]-bin.7z
ESC 退出 0 进度条开关 1 屏幕原始大小 2 屏幕1/2大小 3 屏幕1/3大小 4 屏幕1/4大小 5 屏幕横向放大 20 像素 6 屏幕横向缩小 20 像素 S 下一帧 [ -2秒 ] +2 ...
- 关于imageOrientation
用相机拍出来的照片都含有EXIF信息,UIImage的imageOrientation属性指的就是EXIF中的orientation信息.如果我们忽略orientation信心,而直接对照片进行想速处 ...
- SQL转换时间的时分
SELECT WorkerNo, DutyTime, DATENAME(weekday, DutyTime) AS WeekDay, CycleType, CycleNumber, YnOnDuty, ...
- 让你的 Xcode8 继续使用插件
发表于 2016-09-10 | 分类于 Tips | 21条评论 | 阅读次数 8383 随着 iOS10 的正式版即将发布,Xcode8 GM 也在发布会后放出,本文不会涉 ...