实例详解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 相关文章推荐
extjs 为某个事件设置拦截器
Jan 15 Javascript
JQuery 技巧和窍门整理(8个)
Apr 22 Javascript
中文输入法不触发onkeyup事件的解决办法
Jul 09 Javascript
JavaScript组合拼接字符串的效率对比测试
Nov 06 Javascript
封装获取dom元素的简单实例
Jul 08 Javascript
归纳下js面向对象的几种常见写法总结
Aug 24 Javascript
禁止弹窗中蒙层底部页面跟随滚动的几种方法
Dec 07 Javascript
深入浅析JS中的严格模式
Jun 04 Javascript
微信小程序实现红包雨功能
Jul 11 Javascript
微信小程序实现带参数的分享功能(两种方法)
May 17 Javascript
使用axios发送post请求,将JSON数据改为form类型的示例
Oct 31 Javascript
Ajax常用封装库——Axios的使用
May 08 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实现的简单mock json脚本分享
2015/02/10 PHP
示例详解Laravel重置密码代码重构
2016/08/10 PHP
PHP下 Mongodb 连接远程数据库的实例代码
2017/08/30 PHP
去除链接虚线全面分析总结
2006/08/15 Javascript
复制本贴标题和地址的js代码
2008/07/01 Javascript
javascript数字数组去重复项的实现代码
2010/12/30 Javascript
javascript event 事件解析
2011/01/31 Javascript
Javascript创建自定义对象 创建Object实例添加属性和方法
2012/06/04 Javascript
jquery 插件开发 extjs中的extend用法小结
2013/01/04 Javascript
Jquery 实现表格颜色交替变化鼠标移过颜色变化实例
2013/08/28 Javascript
Javascript事件实例详解
2013/11/06 Javascript
js实现的复制兼容chrome和IE
2014/04/03 Javascript
js光标定位文本框回车表单提交问题的解决方法
2015/05/11 Javascript
浅谈jQuery的bind和unbind事件(绑定和解绑事件)
2017/03/02 Javascript
vue webpack实用技巧总结
2018/04/24 Javascript
解决vue-quill-editor上传内容由于图片是base64的导致字符太长的问题
2018/08/20 Javascript
JavaScript实现PC端横向轮播图
2020/02/07 Javascript
JS实现页面数据懒加载
2020/02/13 Javascript
vue-cli点击实现全屏功能
2020/03/07 Javascript
Vue实现todo应用的示例
2021/02/20 Vue.js
Python 通过pip安装Django详细介绍
2017/04/28 Python
Python高阶函数、常用内置函数用法实例分析
2019/12/26 Python
Python3+selenium实现cookie免密登录的示例代码
2020/03/18 Python
美国网上鞋城:Shoeline.com
2016/11/17 全球购物
Orvis官网:自1856年以来,优质服装、飞钓装备等
2018/12/17 全球购物
法国二手MacBook销售网站:Okamac
2019/03/18 全球购物
高中毕业生生活的自我评价
2013/12/08 职场文书
毕业生的自我评价范文
2013/12/31 职场文书
高中生期末评语大全
2014/01/28 职场文书
班组安全员工作职责
2014/02/01 职场文书
公司行政专员岗位职责
2014/08/24 职场文书
纪念九一八事变演讲稿:青少年应树立远大理想
2014/09/14 职场文书
党的群众路线教育实践活动对照检查材料思想汇报
2014/09/19 职场文书
个人汇报材料范文
2014/12/30 职场文书
搞笑结婚保证书
2015/05/08 职场文书
元宵节晚会主持词
2015/07/01 职场文书