使用GridView做出列选择效果(获取动态生成的控件.鼠标点选GridView.Ajax控件)
先看效果图:
其实就是个一览定制的效果,只不过由于项目的需要,需要使用GridView进行设计,至于为什么不直接使用Html+JQuery,还是因为项目需要,不然维护起来会很麻烦,在制作的过程中会遇到以下几点,记录一下:
1.使用鼠标选择GridView行
要想实现GridView相应鼠标事件,明显是需要Js支持的,为了操作简便和提高可维护行,在这里使用ASP.net的ScriptManager在页面绘制的时候把Js事件给加进去:
代码:
foreach (GridViewRow row in this.gvAllProcessItem.Rows) { if (row.RowType == DataControlRowType.DataRow) {//对整行添加Js事件onclick//事件被激发后自动回传,回传的参数为需要激发事件的GridView和事件发生的行的ClientID row.Attributes["onclick"] = ClientScript.GetPostBackEventReference(this.gvAllProcessItem, "Select$" + row.RowIndex.ToString(), true); row.Attributes["style"] = "cursor:pointer"; } } foreach (GridViewRow row in this.gvSelectedProcess.Rows) { //不能对整行添加事件//如果对整行添加事件,则下拉列表和Textbox的onclick也会被不会并引发回传 if (row.RowType == DataControlRowType.DataRow) { row.Cells[0].Attributes["onclick"] = ClientScript.GetPostBackEventReference(this.gvSelectedProcess, "Select$" + row.RowIndex.ToString(), true); row.Cells[1].Attributes["onclick"] = ClientScript.GetPostBackEventReference(this.gvSelectedProcess, "Select$" + row.RowIndex.ToString(), true); row.Attributes["style"] = "cursor:pointer"; } }//调用基类继续进行页面的绘制 base.Render(writer);
通过上面的处理,在用户使用鼠标点击对应的单元格或行后回激发相应GridView的SelectIndexChange事件,在捕获到该事件后只需进行
protected void gvAllProcessItem_SelectedIndexChanging(object sender, GridViewSelectEventArgs e) { gvAllProcessItem.SelectedIndex = e.NewSelectedIndex;//setGvAllProcessItem(); }
2.在GridView中使用代码动态绘制控件
如例子所示,在用户选择特定的下拉列表值后,会在后面出现Textbox,这些Textbox是使用代码在行绑定上绘制上去的,这里牵涉到动态绘制的代码的获取问题,在GridView中绘制的控件在页面回传之后会丢失,需要重新进行绘制,所以在页面回传之后是无法获得这些动态绘制的控件的,想要取得用户在控件中输入的值需要使用Request.Form来获得表单数据,浏览器在回传表单数据时使用的ID是由Asp.net转成Html之后生成的clientId ,获得ClientID的方法是:如果不是嵌套控件,也就是说在使用服务器控件时ID不能重复的控件,可以直接使用ID.ClientID 来获取,如果是可以嵌套的控件,如:GridView行里面的控件,则其对应的ClientID是和行有关的需要首先获取行的ClientID,具体方法是:gvRow.UniqueID + "$"+ID;即可获得该ID对应的ClientID,
由上可见还是多用HTML控件吧.....
3.UpDatePanel控件
其实很多人都看的出,如果不用Ajax,只用上面的方法,页面早就被刷的受不了了,使用Ajax的时候个人倾向于使用JQuery手工传递Ajax信息,感觉这样比较灵活,便于掌控,同样是由于项目维护的原因....还是使用UpDatePanel...第一次使用这个东西,发现微软确实把什么都弄的很简单,只需要把想要异步回传的控件放在UpdatePanel中里面就好了,在使用之前需要加入<ScriptManager>控件,但是使用这些控件运行时候会大量报错,所以一般需要注意一下几点:
1.<ScriptManager>最好直接放在<Form>的声明下面
2.<system.webServer>下的<handlers>里面需要配置上:
<add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/><add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/><add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
3.如果还不行,发布的时候记得把Debug给关掉
转载于:https://www.cnblogs.com/wk1234/archive/2011/12/16/2289242.html
使用GridView做出列选择效果(获取动态生成的控件.鼠标点选GridView.Ajax控件)相关推荐
- android imagebutton 动画,Android:单击时获取动态生成的ImageButton的ID
我必须做同样的事情,这就是我所做的 for(int i = 0 ;i view_media_gallery_item = LayoutInflater.from(view.getContext()). ...
- 聚焦到Windows的窗口,激活窗口获取键盘输入,不需要鼠标点击,C++接口,focus, active, foreground
情景 假设windows上开了2个窗口,分别叫WinA和WinB: 点击WinB后,WinA失去焦点,但我想让WinA获得焦点,获得键盘输入. 做法: 1.激活WinA 2.让WinA置于前面 3.聚 ...
- Jsoup获取动态js生成的内容
Jsoup本身是只能获取到静态页面的数据,并无法获取动态生成的内容,所以单单使用jsoup是无法获取到js生成的内容的.我这里使用了htmlunit来获取网页内容后,将网页转换成xml格式,再通过js ...
- asp mysql 可编辑树状,基于数据库动态生成树形目录-ASP教程,数据库相关
一. 目录树的广泛应用 为了这段内容,在百度上搜了搜,内容一大通,相关的竟没有.搜什么搜嘛?用处不是明摆着吗?资源管理器文件夹的管理,论坛中多级论坛的管理,java中的awt正是缺乏包括树形目录这样的 ...
- 动态生成的dom为什么绑定事件会失效,以及如何解决
之前做项目都是直接用jquery的bind绑定事件,不过当时都不是动态生成dom元素,而是已经页面中原本存在的dom元素进行事件绑定,最近在测试给动态生成的dom绑定事件的时候发现事件失效,于是就测试 ...
- ajax使用json下拉框,ajax请求后台得到json数据后动态生成树形下拉框的方法
如下所示: $(function(){ $.ajax({ url:"departmentAction_getAllDep.action", type:"post" ...
- 自己做一个table插件 (一)Ajax获取数据后动态生成table
今天我给大家带来一个简单的JQ插件,Ajax获取数据后动态生成table.当然,有这种功能的插件有很多.著名的有DataTable.JqGrid--它们虽然功能丰富,成熟,拿来做二次开发是一个不错的选 ...
- 动态生成表格呈现还是将表格直接绑定gridview等控件呈现的开发方式选择依据...
动态生成表格呈现还是将表格直接绑定gridview等控件呈现的开发方式选择依据:由存储过程决定,如果编写的存储过程可以生成需要呈现的表格则直接绑定,否则要动态生成表格 转载于:https://www. ...
- 动态生成的DOM做点击事件无效
有时候我们的标签都是从后台获取的数据,然后利用JS添加到页面上,当我们写生成的标签的点击事件(click)时没有效果. 例如: <section>测试动态生成的DOM点击事件<br ...
最新文章
- HTTP POST GET 区别详解
- C#多维数组与嵌套数组
- 什么? 搞不定redis分布式锁?
- css 背景属性 0302
- 618期间, “直播带货”翻车负面信息暴增
- 获取指定文件目录路径下的所有文件
- Delphi循环语句 -For
- 关系代数 元组关系演算
- 回归预测 | MATLAB实现GLM广义线性模型数据回归预测
- QQ聊天记录的相关代码
- 112 洪聖民 捽翁
- 树莓派(Raspberry Pi 4 Model B)编译64位内核Kernel
- jquery 封装幻灯插件_21个jQuery幻灯片插件
- 关于AI-人工智能看法,进行漫谈。
- 一个爬取图片的app
- 如何成为稀缺性人才?
- 《哲学史讲演录》——思辨节选---塞诺芬尼 、巴门尼德
- 科学计算法(e/E表示规则)
- hello,intel TBB
- 随机数rand和srand的用法
热门文章
- nginx ------反向代理和负载均衡
- 使用WGAN生成手写字体
- 扩展 lua require 的行为
- Model compatibility cannot be checked because the database does not contain model metadata
- 灵活运用 SQL Server 数据库的 FOR XML PATH
- 【Android】线程池
- Fiddler抓取https相关设置
- 【opencv】VideoCapture打不开本地视频文件或者网络IP摄像头
- Referenced file contains errors (http://www.springframework.org/schema/beans/spring-beans-4.3.xsd).
- x1c 2017 安装mint18的坑——grub2