实例详解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实现DIV滚动自动滚动到底部的代码
Mar 01 Javascript
js确定对象类型方法
Mar 30 Javascript
基于jQuery选择器的整理集合
Apr 26 Javascript
JavaScript验证18位身份证号码最后一位正确性的实现代码
Aug 07 Javascript
javascript文件加载管理简单实现方法
Jul 25 Javascript
浅谈使用MVC模式进行JavaScript程序开发
Nov 10 Javascript
Vue表单实例代码
Sep 05 Javascript
DataTables+BootStrap组合使用Ajax来获取数据并且动态加载dom的方法(排序,过滤,分页等)
Nov 09 Javascript
lhgcalendar时间插件限制只能选择三个月的实现方法
Jul 03 Javascript
使用prop解决一个checkbox选中后再次选中失效的问题
Jul 05 Javascript
bing Map 在vue项目中的使用详解
Apr 09 Javascript
Weex开发之地图篇的具体使用
Oct 16 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 简易输出CSV表格文件的方法详解
2013/06/20 PHP
php中利用explode函数分割字符串到数组
2014/02/08 PHP
php上传文件问题汇总
2015/01/30 PHP
Thinkphp框架开发移动端接口(1)
2016/08/18 PHP
PHP封装的验证码工具类定义与用法示例
2018/08/22 PHP
laravel 模型查询按照whereIn排序的示例
2019/10/16 PHP
PHP实现基本留言板功能原理与步骤详解
2020/03/26 PHP
JS 判断代码全收集
2009/04/28 Javascript
关于火狐(firefox)及ie下event获取的两种方法
2012/12/27 Javascript
用Javascript来生成ftp脚本的小例子
2013/07/03 Javascript
js 获取radio按钮值的实例
2013/08/17 Javascript
JavaScript自定义事件介绍
2013/08/29 Javascript
js中关于一个分号的崩溃示例
2013/11/11 Javascript
Jquery 点击按钮自动高亮实现原理及代码
2014/04/25 Javascript
director.js实现前端路由使用实例
2015/02/03 Javascript
JavaScript实现的字符串replaceAll函数代码分享
2015/04/02 Javascript
实现JavaScript的组成----BOM和DOM详解
2016/05/18 Javascript
微信小程序 wx:key详细介绍
2016/10/28 Javascript
WebPack基础知识详解
2017/01/16 Javascript
基于JavaScript实现的折半查找算法示例
2017/04/14 Javascript
jQuery回调方法使用示例
2017/06/26 jQuery
高性能的javascript之加载顺序与执行原理篇
2018/01/14 Javascript
vue+element-ui+axios实现图片上传
2019/08/20 Javascript
express框架中使用jwt实现验证的方法
2019/08/25 Javascript
封装Vue Element的table表格组件的示例详解
2020/08/19 Javascript
Python使用GitPython操作Git版本库的方法
2020/02/29 Python
戴尔马来西亚官网:Dell Malaysia
2020/05/02 全球购物
行政部总经理岗位职责
2014/01/04 职场文书
教你打造完美的创业计划书
2014/01/06 职场文书
公司庆典活动邀请函
2014/01/09 职场文书
《假如》教学反思
2014/04/17 职场文书
机关班子查摆问题及整改措施
2014/10/28 职场文书
2014年安全管理工作总结
2014/12/01 职场文书
党员廉洁自律个人总结
2015/02/13 职场文书
2016年大学迎新晚会工作总结
2015/10/15 职场文书
教师素质教育心得体会
2016/01/19 职场文书