实例详解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 相关文章推荐
JavaScript格式化数字的函数代码
Nov 30 Javascript
『JavaScript』限制Input只能输入数字实现思路及代码
Apr 22 Javascript
JavaScript学习心得之概述
Jan 20 Javascript
jQuery插件PageSlide实现左右侧栏导航菜单
Apr 12 Javascript
JS自动倒计时30秒后按钮才可用(两种场景)
Aug 31 Javascript
JavaScript数组方法大全(推荐)
Jul 05 Javascript
js简单实现调整网页字体大小的方法
Jul 23 Javascript
angular分页指令操作
Jan 09 Javascript
vue实现图片加载完成前的loading组件方法
Feb 05 Javascript
浅谈React Event实现原理
Sep 20 Javascript
Vue+ElementUI使用vue-pdf实现预览功能
Nov 26 Javascript
Vue路由守卫及页面登录权限控制的设置方法(两种)
Mar 31 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
php 正则 过滤html 的超链接
2009/06/02 PHP
php 上传文件类型判断函数(避免上传漏洞 )
2010/06/08 PHP
php模块memcache和memcached区别分析
2011/06/14 PHP
利用PHP实现智能文件类型检测的实现代码
2011/08/02 PHP
PHP实现加强版加密解密类实例
2015/07/29 PHP
Ubuntu server 11.04安装memcache及php使用memcache来存储session的方法
2016/05/31 PHP
php+lottery.js实现九宫格抽奖功能
2019/07/21 PHP
JS获取IUSR_机器名和IWAM_机器名帐号的密码
2006/12/06 Javascript
购物车选中得到价格实现示例
2014/01/26 Javascript
jQuery+PHP实现动态数字展示特效
2015/03/14 Javascript
深入解析JavaScript编程中的this关键字使用
2015/11/09 Javascript
概述javascript在Google IE中的调试技巧
2016/11/24 Javascript
详解如何使用Vue2做服务端渲染
2017/03/29 Javascript
vue实现文章内容过长点击阅读全文功能的实例
2017/12/28 Javascript
jQuery获取所有父级元素及同级元素及子元素的方法(推荐)
2018/01/21 jQuery
ejsExcel模板在Vue.js项目中的实际运用
2018/01/27 Javascript
Javascript实现异步编程的过程
2018/06/18 Javascript
python下实现二叉堆以及堆排序的示例
2017/09/29 Python
python将一组数分成每3个一组的实例
2018/11/14 Python
pyinstaller参数介绍以及总结详解
2019/07/12 Python
python plt可视化——打印特殊符号和制作图例代码
2020/04/17 Python
matplotlib绘制鼠标的十字光标的实现(内置方式)
2021/01/06 Python
CSS3中box-shadow的用法介绍
2015/07/15 HTML / CSS
CSS3动画:5种预载动画效果实例
2017/04/05 HTML / CSS
美国综合购物商城:UnbeatableSale.com
2018/11/28 全球购物
家长会演讲稿范文
2014/01/10 职场文书
参观考察邀请函范文
2014/01/29 职场文书
公司门卫岗位职责
2014/03/15 职场文书
机械设计专业大学生职业生涯规划书范文
2014/09/13 职场文书
2015年青年志愿者协会工作总结
2015/04/27 职场文书
2015年机关纠风工作总结
2015/05/15 职场文书
公司酒会致辞
2015/07/30 职场文书
PHP对接阿里云虚拟号的实现(号码隐私保护)
2021/04/06 PHP
MySQL完整性约束的定义与实例教程
2021/05/30 MySQL
Python移位密码、仿射变换解密实例代码
2021/06/27 Python
MongoDB日志切割的三种方式总结
2021/09/15 MongoDB