jQuery는 매우 강력한 클라이언트측 JS 프로그래밍 기술입니다. 여기서는 관련 배경 지식을 너무 자세히 설명하고 싶지 않습니다. 단지 asp.net 컨트롤과 함께 개발하는 방법을 간략하게 설명하고 싶을 뿐입니다.
예를 들어, 아래 그림과 같은 기능을 수행하려고 하면 상태, 숫자, 숫자 1, 숫자 2 및 평균의 모든 항목이 배경을 통해 바인딩되는 효과가 있습니다. 현재 행 2 숫자의 평균은 얼마입니까? 전제는 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> <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>
키는 페이지의 머리 부분에 있습니다. 표시된 대로 효과를 얻으려면 다음 코드를 입력하세요.
<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 코드는 읽기 쉽고 이해하기 쉽다는 것을 알게 될 것입니다. 그리고 코드도 너무 예쁘고 무엇보다 호환성이 좋다는 점이에요.
첨부된 내용은 jQuery가 어떻게 강력한 성능을 발휘할 수 있는지 보여주는 정적 HTML 페이지입니다. 그 효과는 각 행의 버튼을 클릭하면 현재 행의 텍스트 값이 팝업되는 것입니다.
<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는 짧지만 꽤 강력합니다.