实例详解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函数中的arguments参数
Aug 01 Javascript
JavaScript更改原始对象valueOf的方法
Mar 19 Javascript
jQuery图片轮播插件——前端开发必看
May 31 Javascript
JavaScript数据类型转换的注意事项
Jul 31 Javascript
js实现日历与定时器
Feb 22 Javascript
Vue表单验证插件的制作过程
Apr 01 Javascript
AngularJS $http模块POST请求实现
Apr 08 Javascript
Electron-vue脚手架改造vue项目的方法
Oct 22 Javascript
JavaScript中的相等操作符使用详解
Dec 21 Javascript
基于Web Audio API实现音频可视化效果
Jun 12 Javascript
原生js实现表格循环滚动
Nov 24 Javascript
js实现验证码干扰(动态)
Feb 23 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
生成缩略图
2006/10/09 PHP
WordPress中邮件的一些修改和自定义技巧
2015/12/15 PHP
PHP文件上传小程序 适合初学者学习!
2019/05/23 PHP
laravel 解决Eloquent ORM的save方法无法插入数据的问题
2019/10/21 PHP
使用JavaScript实现Java的List功能(实例讲解)
2013/11/07 Javascript
js获得当前时区夏令时发生和终止的时间代码
2014/02/23 Javascript
javascript截取字符串小结
2015/04/28 Javascript
JavaScript实现带播放列表的音乐播放器实例分享
2016/03/07 Javascript
jQuery实现导航高亮的方法【附demo源码下载】
2016/11/09 Javascript
浅谈jQuery hover(over, out)事件函数
2016/12/03 Javascript
React教程之Props验证的具体用法(Props Validation)
2017/09/04 Javascript
详解处理Vue单页面应用SEO的另一种思路
2018/11/09 Javascript
vue中v-show和v-if的异同及v-show用法
2019/06/06 Javascript
python实现网页链接提取的方法分享
2014/02/25 Python
跟老齐学Python之坑爹的字符编码
2014/09/28 Python
利用Python演示数型数据结构的教程
2015/04/03 Python
Python输出9*9乘法表的方法
2015/05/25 Python
python 字典中文key处理,读取,比较方法
2018/07/06 Python
python 中文件输入输出及os模块对文件系统的操作方法
2018/08/27 Python
Python中shapefile转换geojson的示例
2019/01/03 Python
PyQt5图形界面播放音乐的实例
2019/06/17 Python
浅析python标准库中的glob
2020/03/13 Python
在django中form的label和verbose name的区别说明
2020/05/20 Python
详解Pycharm安装及Django安装配置指南
2020/09/15 Python
Python读写csv文件流程及异常解决
2020/10/20 Python
美国顶级防滑鞋:Shoes For Crews
2017/03/27 全球购物
Clarks鞋澳大利亚官方网站:Clarks Australia
2019/12/25 全球购物
this关键字的作用
2016/01/30 面试题
Servlet如何得到客户端机器的信息
2014/10/17 面试题
母亲80寿诞答谢词
2014/01/16 职场文书
尽职尽责村干部自我鉴定
2014/01/23 职场文书
华山导游词
2015/02/03 职场文书
《角的初步认识》教学反思
2016/02/17 职场文书
2016年六一文艺汇演开幕词
2016/03/04 职场文书
利用python进行数据加载
2021/06/20 Python
简单聊聊TypeScript只读修饰符
2022/04/06 Javascript