实例详解jQuery结合GridView控件的使用方法


Posted in Javascript onJanuary 04, 2016

jQuery是一种非常强大的客户端JS编程技术,这里不想过多阐述它的相关背景知识,只想简单演示一下如何与asp.net的控件结合开发。
比如,我们要做一个下面如图所示的功能,效果是状态、编号、数字1、数字2、平均值所有的项都是通过后台绑定,如何点击checkbox按钮,来实现自动计算当前行两个数字的平均值呢?前提是用jQuery来实现?

实例详解jQuery结合GridView控件的使用方法

我们直接在页面的Page_Load事件中输入如下代码:

protected void Page_Load(object sender, EventArgs e) 
{ 
  if (!Page.IsPostBack) 
  { 
    DataTable dt = new DataTable(); 
    dt.Columns.AddRange(new DataColumn[] {  
      new DataColumn("id",typeof(Int32)), 
      new DataColumn("num1",typeof(Int32)), 
      new DataColumn("num2",typeof(Int32)) 
    }); 
 
    DataRow dr = null; 
    dr = dt.NewRow(); 
    dr["id"] = 1; 
    dr["num1"] = 20; 
    dr["num2"] = 40; 
    dt.Rows.Add(dr); 
 
    dr = dt.NewRow(); 
    dr["id"] = 2; 
    dr["num1"] = 40; 
    dr["num2"] = 30; 
    dt.Rows.Add(dr); 
 
    this.GridView1.DataSource = dt.DefaultView; 
    this.GridView1.DataBind(); 
  } 
}

前台页面body部分:

<body> 
  <form id="form1" runat="server"> 
    <div> 
      <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false"> 
        <Columns> 
          <asp:TemplateField HeaderText="状态"> 
            <ItemTemplate> 
              <asp:CheckBox ID="checkstate" runat="server" /> 
            </ItemTemplate> 
          </asp:TemplateField> 
          <asp:TemplateField HeaderText="编号"> 
            <ItemTemplate> 
              <asp:Label ID="lblId" runat="server"> <%#Eval("id") %></asp:Label> 
            </ItemTemplate> 
          </asp:TemplateField> 
          <asp:TemplateField HeaderText="数字1"> 
            <ItemTemplate> 
              <asp:Label ID="lblNum1" runat="server"> <%#Eval("num1") %></asp:Label> 
            </ItemTemplate> 
          </asp:TemplateField> 
          <asp:TemplateField HeaderText="数字2"> 
            <ItemTemplate> 
              <asp:Label ID="lblNum2" runat="server"> <%#Eval("num2") %></asp:Label> 
            </ItemTemplate> 
          </asp:TemplateField> 
          <asp:TemplateField HeaderText="平均值"> 
            <ItemTemplate> 
              <asp:TextBox ID="avg_value" runat="server" /> 
            </ItemTemplate> 
          </asp:TemplateField> 
        </Columns> 
      </asp:GridView> 
    </div> 
  </form> 
</body>

关键的在页面的head部分,输入如下代码就可以实现如图效果了。

<script src="js/jquery-1.4.2.js"></script> 
<script type="text/javascript"> 
  $(function () { 
    $("#<%=GridView1.ClientID%>").find("tr td input[type=checkbox]").each(function () { 
      $(this).bind("click", function () { 
        if (this.checked) { 
          var id = $(this).parent().parent().find("span[id*=lblId]").text(); 
          var num1 = $(this).parent().parent().find("span[id*=lblNum1]").text(); 
          var num2 = $(this).parent().parent().find("span[id*=lblNum2]").text(); 
 
          var result = (parseFloat(num1) + parseFloat(num2)) / 2; 
          $(this).parent().parent().find("input[id*=avg_value]").val(result); 
        } else { 
          $(this).parent().parent().find("input[id*=avg_value]").val(""); 
        } 
      }); 
    }); 
  }); 
</script>

你会发现jQuery的代码读着很轻松,很容易理解。而且代码也很优美,最关键的是兼容性很好。
再附一个简单点的例子,这是一个静态html页面,看jQuery是如何发挥威力的。效果是点击每一行的按钮时,弹出当前行的text里面的value。

<html> 
<head> 
<script type="text/javascript" src="jquery-1.4.2.js"></script> 
 <script type="text/javascript"> 
    $(function(){ 
      $("table tr td").each(function(){ 
        $(this).find("[type=button]").click(function(){ 
          alert($(this).parent().parent().find("[type=text]").val()); 
        }); 
      }); 
    }); 
 </script> 
</head> 
<body> 
<table>  
 <tr>  
  <td>1</td> 
  <td><input type=text value="数据1" /></td> 
  <td><input type=button onclick="GetTest()" value="获取" /></td> 
 </tr>  
 <tr> 
  <td>2</td> 
  <td><input type=text value="数据2" /></td> 
  <td><input type=button onclick="GetTest()" value="获取" /></td> 
 </tr>  
</table> 
</body> 
</html>

试想,如果我们用js去做,将会很麻烦,而且还要考虑各种浏览器的兼容性。看到这里不得不感叹一句,jQuery虽然短小,但是相当强大啊。

Javascript 相关文章推荐
JQuery toggle使用分析
Nov 16 Javascript
JSON语法五大要素图文介绍
Dec 04 Javascript
display和visibility的区别示例介绍
Feb 26 Javascript
基于jQuery实现的图片切换焦点图整理
Dec 07 Javascript
JavaScript中window.showModalDialog()用法详解
Dec 18 Javascript
Node.js复制文件的方法示例
Dec 29 Javascript
在javaScript中检测数据类型的几种方式小结
Mar 04 Javascript
基于vue2的table分页组件实现方法
Mar 20 Javascript
react的滑动图片验证码组件的示例代码
Feb 27 Javascript
VUE.js实现动态设置输入框disabled属性
Oct 28 Javascript
webpack4 optimization使用总结
Nov 10 Javascript
javascript-hashchange事件和历史状态管理实例分析
Apr 18 Javascript
jQuery EasyUI之DataGrid使用实例详解
Jan 04 #Javascript
JavaScript原型及原型链终极详解
Jan 04 #Javascript
jQuery实现简单的点赞效果
May 29 #Javascript
jQuery+Ajax实现无刷新操作
Jan 04 #Javascript
使用微信内置浏览器点击下拉框出现页面乱跳转现象(iphone),该怎么办
Jan 04 #Javascript
javascript从定义到执行 你不知道的那些事
Jan 04 #Javascript
基于jQuery实现交互体验社会化分享代码附源码下载
Jan 04 #Javascript
You might like
CI(CodeIgniter)框架配置
2014/06/10 PHP
php递归删除目录与文件的方法
2015/01/30 PHP
PHP使用mkdir创建多级目录的方法
2015/12/22 PHP
Symfony实现行为和模板中取得request参数的方法
2016/03/17 PHP
手机端转盘抽奖代码分享
2015/09/10 Javascript
jQuery操作Table技巧大汇总
2016/01/23 Javascript
JS实现判断图片是否加载完成的方法分析
2018/07/31 Javascript
vue使用better-scroll实现下拉刷新、上拉加载
2018/11/23 Javascript
vue实现压缩图片预览并上传功能(promise封装)
2019/01/10 Javascript
详解ES6新增字符串扩张方法includes()、startsWith()、endsWith()
2020/05/12 Javascript
JavaScript常用工具函数汇总(浏览器环境)
2020/09/17 Javascript
javascript实现滚轮轮播图片
2020/12/13 Javascript
微信小程序自定义modal弹窗组件的方法详解
2020/12/20 Javascript
[05:43]VG.R战队教练Mikasa专访:为目标从未停止战斗
2016/08/02 DOTA
[33:42]LGD vs OG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
[36:05]完美世界DOTA2联赛循环赛 Forest vs DM 第一场 11.06
2020/11/06 DOTA
python里将list中元素依次向前移动一位
2014/09/12 Python
python中文分词,使用结巴分词对python进行分词(实例讲解)
2017/11/14 Python
通过Python 获取Android设备信息的轻量级框架
2017/12/18 Python
Python多线程threading和multiprocessing模块实例解析
2018/01/29 Python
python 实现在shell窗口中编写print不向屏幕输出
2020/02/19 Python
python+selenium+PhantomJS抓取网页动态加载内容
2020/02/25 Python
美国孕妇装品牌:Destination Maternity
2018/02/04 全球购物
我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种编码的字符串?
2014/03/30 面试题
采购员岗位职责
2013/11/15 职场文书
安全保证书范文
2014/04/29 职场文书
党的群众路线教育实践活动对照检查材料思想汇报(党员篇)
2014/09/25 职场文书
2014年平安创建工作总结
2014/11/24 职场文书
资料员岗位职责
2015/02/10 职场文书
大客户经理岗位职责
2015/04/09 职场文书
企业法人代表证明书
2015/06/18 职场文书
2016学习医德医风心得体会
2016/01/25 职场文书
2016年六一儿童节开幕词
2016/03/04 职场文书
2016年第十九届推普周活动总结
2016/04/06 职场文书
餐厅如何利用“营销策略”扭转亏本局面
2019/10/15 职场文书
详解Python requests模块
2021/06/21 Python