jQuery与GridView控件结合示例

简介: jQuery是一种非常强大的客户端JS编程技术,这里不想过多阐述它的相关背景知识,只想简单演示一下如何与asp.net的控件结合开发。
+关注继续查看

jQuery是一种非常强大的客户端JS编程技术,这里不想过多阐述它的相关背景知识,只想简单演示一下如何与asp.net的控件结合开发。

比如,我们要做一个下面如图所示的功能,效果是状态、编号、数字1、数字2、平均值所有的项都是通过后台绑定,如何点击checkbox按钮,来实现自动计算当前行两个数字的平均值呢?前提是用jQuery来实现?

我们直接在页面的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 EasyUI 重写datagrid的datetimebox编辑类型
jQuery EasyUI 重写datagrid的datetimebox编辑类型
1845 0
|
JavaScript 前端开发
《jQuery、jQuery UI及jQuery Mobile技巧与示例》——7.4 示例:使用按钮集装饰单选框
除了button,jQuery UI还提供了buttonset(按钮集)。代码清单7-4演示了如何使用buttonset将一组单选框装饰成普通按钮的样式,其中每次只能选中一个按钮。
1698 0
|
JavaScript
扩展 jQuery datebox控件按钮
功能需求: 自定义扩展,将原先的datebox控件按钮进行自定义的扩展: 1.问题: 对原先的时间按钮控件进行更改扩展,新增 “一刻钟” “半小时” “一小时” 选项。 获取原先的 datebox 对象的原型,进行扩展。
1052 0
|
JavaScript 索引
jquery easyui-datagrid/treegrid 清空数据参考
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chinahuyong/article/details/51862082   在使用easyui的treegrid或datagrid的过程经常会有这样的场景,如:需要按不同的类型加载数据时,如果选择的分类下没有数据应该把上次展示的数据清空,以免引用歧义。
1060 0
|
JavaScript 前端开发 数据格式
|
JavaScript PHP 数据格式
JQuery EasyUI combobox(下拉列表框)
 下拉列表框 继承 $.fn.combo.defaults. 重写 $.fn.combobox.defaults. 组合框显示一个可编辑的文本框和下拉列表,用户选择一个或多个值。用户可以直接输入文本到顶部的列表,或选择一个或多个当前值列表。 依赖 combo 应用实例 从&lt;select&gt;创建下拉列表框元素与一个预定义的结构。 [html] 预
2021 0
|
JavaScript 前端开发 .NET
jQuery与GridView控件结合示例
jQuery是一种非常强大的客户端JS编程技术,这里不想过多阐述它的相关背景知识,只想简单演示一下如何与asp.net的控件结合开发。
716 0
|
JavaScript API 数据格式
jQuery EasyUI API 中文文档 - 组合框(ComboBox)
ComboBox 组合框 扩展自 $.fn.combo.defaults。 用 $.fn.combobox.defaults 重写了 defaults。 依赖 combo 用法 1.
988 0
相关产品
云迁移中心
相关课程
更多
推荐文章
更多