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虽然短小,但是相当强大啊。
本文地址:https://www.stayed.cn/item/8653
转载请注明出处。
本站部分内容来源于网络,如侵犯到您的权益,请 联系我