在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
由于最近开始学写些asp.net程序,所以对于一小技巧不是很熟悉,因此不断的从网络上四处收来,自己做个备忘,也许有的朋友也能用得着。 1。不让GridView的表头显示。(来源yanli0823的博客)直接使用showHeader =false这个属性竟然不起任何作用,表头该有还是有,试了试在后台.cs代码文件中用gridview1.ShowHeader = false,这种方式也不可以; 然后使用css样式,在headerstyle中引用样式,display:none,这样达到了我要的效果。代码: <headerStyle cssclass="gvHideHeader"/> css样式文件中 .gvHideHeader { display:none; } 2.GridView的HyperLinkField,并让此超链接带参数。(来源MSDN)
<asp:boundfield datafield="OrderID" headertext="Quantity"/> 3。后台获取 GridView 行数据的常见两种方式1).在后台RowCommand 事件中先取得行号,再根据行号去访问各列的值 在WebControl中,不像WinForm那样,可以那么容易的取得行号的 因为Web提交的过程中,Grid都不存在了,对于服务器上执行的后台代码当然找不着所谓的e.RowIndex什么的了 用GridView默认的ButtonField 我找了很多资料,也不知道应该如何取得行号,好像说要在行绑定过程中将行号绑定到 它的CommandArguments中,可以在2.0中,我就没发现ButtonField有什么CommandArguments 所以只有用模板列了,用他的例子如下: aspx中GridView里如下: <asp:TemplateField HeaderText="取消发货" > 不用任何绑定,在后台如下读取行号 C#: if (e.CommandName == "CancelSend") //CommandSource 引起事件的命令源 做到这里就觉得奇怪,为什么用Grid本身的ButtonField不能转化 用ButtonField读的时候,CommandSource 为GridView本身,真是奇怪。这样一来不知道那ButtonField有什么用。
还有另一种在命令参数中绑定的方法,可以实现,但感觉没这种方式直接,此处不介绍。
2).通过CommandArgument参数进行传递,具体方法如下: 在页面代码中,CommandArgument='<%#Eval("ID")+","+Eval("Name")+","+Eval("Age")%>' 后台取值方法如下: object[] arguments = e.CommandArgument.ToString().Split(','); 操作很简单,现在说一下我理解的原理。 CommandArgument是一个object类型的属性,要传多个参数只能靠字符串拼接然后在后台拆分。 还好,asp.net Eval方法很容易完成这样的功能,在CommandArgument='<%#Eval("ID")+","+Eval("Name")+","+Eval("Age")%>'中 执行过程如下,先分别对Eval进行绑定,然后把<%# %>里的东西ToString一下,再封装成object进行传递。 不信你可以试试用这种方式CommandArgument='<%#Eval("ID"),Eval("Name"),Eval("Age")%>' 执行时就会报错“ToString”方法没有采用“4”个参数的重载,为什么了? 按上面的原理,假如id=1,name=kuitar,age=24. 则后一种方式<%# %>里的内容为"1","kuitar","25" 而用第一种方式则不一样,绑定后<%# %>里的内容为"1,kuitar,25",因为+号起了作用。这时候ToString应该没有问题了。
4.GridView中HyperLinkField传递两个以上参数( 闹市静屋, 木子屋)1).在项目中,采用数据控件的时候,我们有时要传递多个参数,不一定是数据表中的字段,也可能是页面中的值.虽然要实现有很多种方法,我这里给出一种 我在项目中使用的方法,方法很简单。 2).很多时候一个链接通常带有好几个参数,形如:http://www.mzwu.com/article.asp?u_id=1&id=1197, 怎么让HyperLinkField的链接也带多个参数呢?很简单,只须在其DataNavigateUrlFields属性中设置多个字段(用逗号分 隔),然后在属性DataNavigateUrlFormatString中使用{0}、{1}、{2}等来表示字段值即可。
5.如何为GridView添加一个复选框,实现效果:点击header上的复选框实现所有按钮的全部选中或全部不选中。 1)、 首先在GridView中添加一个绑定列。什么也不写预览后的的效果如下
如何为数据项添加CheckBox:写到后台代码的RowDataBound事件中: 为Header添加CheckBox,代码也是写在RowDataBound()事件中实现代码为本图片的最后一个方法,判断Header,只需要进行一层if判断即可: 在浏览器中浏览效果如下: 2、 在RowDataBound事件中写代码,我们一定要知道GridView的结构,GridView本身是一个非常大的对象了,里面每一行Row是一个对象,行中每一个Cell格也是一个对象。 格中的内容分为两种情况:一种是绑定显示的文字,一种是控件,例如超链接按钮,CheckBox等等,如何在RowDataBound中找到这些对象:e.Row.Cells[].FindControl(0),里面放一个控件的索引号。 如果想要实现CheckBox的全选,JavaScript是必不可少的,这里我们可以单独创建一个JS文件,然后把需要写的JavaScript代码放到这个文件中,然后把这个JS文件导入到我们的网页当中即可,代码如下: 这样就实现了全选的效果了:
|
请发表评论