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虽然短小,但是相当强大啊。

目录
相关文章
|
关系型数据库 Serverless 分布式数据库
1.4亿人都在用|伊对APP x 阿里云PolarDB:这一对,天生配
PolarDB以其出色的性能和稳定性为伊对APP提供了强大的支持
1.4亿人都在用|伊对APP x 阿里云PolarDB:这一对,天生配
|
机器学习/深度学习 人工智能 自然语言处理
人工智能的概念、分类与实现方法
什么是人工智能 人工智能 又被称为机器智能,是一种综合计算机科学、统计学、语言学等多种学科,使机器 模仿、展现 人类智能的 技术。 说到人工智能我们不得不提到图灵测试,那么什么是图灵测试呢? 计算机科学家 艾伦·图灵 在 1950 年发表了一篇论文,文中提出了一项思想实验:我们委托一名人类测试员,使用测试对象能够理解的语言,分别和身处密室中的一台机器、一名人类自由地进行对话。假如经过若干轮对话后,测试员依然无法分辨出谁是机器、谁是人类,则说明该机器通过测试,是具有智能的。 人工智能的应用也可分为四大主要组成部分: 计算机视觉:辨识图像的形状、颜色、含义; 自然语言处理:理解人类的自然语言
674 0
|
10月前
|
机器学习/深度学习 自然语言处理 并行计算
DeepSpeed分布式训练框架深度学习指南
【11月更文挑战第6天】随着深度学习模型规模的日益增大,训练这些模型所需的计算资源和时间成本也随之增加。传统的单机训练方式已难以应对大规模模型的训练需求。
1213 3
|
9月前
|
域名解析 UED SEO
如何选择网站模板建设网站?
本文主要介绍了网站模板的相关知识,包括什么是网站模板、选择模板的标准、使用网站模板建设网站的方法和部署步骤等。同时,文章强调了选择高品质模板的重要性,并提供了丰富的模板界面和搜索引擎优化元素,帮助用户快速搭建网站并提升用户体验。
375 8
|
10月前
|
存储 供应链 区块链
区块链技术在供应链管理中的应用与实践
区块链技术在供应链管理中的应用与实践
|
10月前
|
SQL 人工智能 DataWorks
DataWorks:新一代 Data+AI 数据开发与数据治理平台演进
本文介绍了阿里云 DataWorks 在 DA 数智大会 2024 上的最新进展,包括新一代智能数据开发平台 DataWorks Data Studio、全新升级的 DataWorks Copilot 智能助手、数据资产治理、全面云原生转型以及更开放的开发者体验。这些更新旨在提升数据开发和治理的效率,助力企业实现数据价值最大化和智能化转型。
2286 7
|
9月前
|
数据采集 监控 数据可视化
数据质量:电商零售数据管理根基
电商零售数据管理是企业数字化发展的核心竞争力。它包括市场洞察、运营优化和客户关系管理,通过数据收集、整理、分析与应用,实现精准决策与高效运营。然而,数据管理面临数据质量、安全与隐私、集成融合及人才短缺等挑战。使用板栗看板等工具,可有效提升数据可视化、实时监控、团队协作与决策优化,助力企业挖掘数据价值,增强市场竞争力。
|
人工智能 自动驾驶 安全
人工智能的最终目标:超越人类智能的未来
人工智能(AI)已经成为当今世界最引人注目的技术领域之一,其应用范围涵盖了从医疗保健到自动驾驶汽车的各个领域。然而,尽管AI在许多任务上已经表现出惊人的能力,但其最终目标是什么?这是一个备受争议的问题,但大多数研究人员和科技领袖都同意,人工智能的最终目标是超越人类智能。
|
机器学习/深度学习 测试技术 网络架构
YOLOv5改进 | 主干篇 | ConvNeXtV2全卷积掩码自编码器网络
YOLOv5改进 | 主干篇 | ConvNeXtV2全卷积掩码自编码器网络
538 0
|
监控 NoSQL Redis
【Redis 系列】redis 学习十一,redis 的哨兵模式详解和实战
【Redis 系列】redis 学习十一,redis 的哨兵模式详解和实战
284 0

热门文章

最新文章