天天看點

JQuery與GridView控件結合示例

JQuery是一種非常強大的用戶端JS程式設計技術,這裡不想過多闡述它的相關背景知識,隻想簡單示範一下如何與asp.net的控件結合開發。

比如,我們要做一個下面如圖所示的功能,效果是狀态、編号、數字1、數字2、平均值所有的項都是通過背景綁定,如何點選checkbox按鈕,來實作自動計算目前行兩個數字的平均值呢?前提是用JQuery來實作?

JQuery與GridView控件結合示例

我們直接在頁面的Page_Load事件中輸入如下代碼:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

<code>protected</code> <code>void</code> <code>Page_Load(</code><code>object</code> <code>sender, EventArgs e)</code>

<code>{</code>

<code>    </code><code>if</code> <code>(!Page.IsPostBack)</code>

<code>    </code><code>{</code>

<code>        </code><code>DataTable dt = </code><code>new</code> <code>DataTable();</code>

<code>        </code><code>dt.Columns.AddRange(</code><code>new</code> <code>DataColumn[] {</code>

<code>            </code><code>new</code> <code>DataColumn(</code><code>"id"</code><code>,</code><code>typeof</code><code>(Int32)),</code>

<code>            </code><code>new</code> <code>DataColumn(</code><code>"num1"</code><code>,</code><code>typeof</code><code>(Int32)),</code>

<code>            </code><code>new</code> <code>DataColumn(</code><code>"num2"</code><code>,</code><code>typeof</code><code>(Int32))</code>

<code>        </code><code>});</code>

<code>                       </code> 

<code>        </code><code>DataRow dr = </code><code>null</code><code>;</code>

<code>        </code><code>dr = dt.NewRow();</code>

<code>        </code><code>dr[</code><code>"id"</code><code>] = 1;</code>

<code>        </code><code>dr[</code><code>"num1"</code><code>] = 20;</code>

<code>        </code><code>dr[</code><code>"num2"</code><code>] = 40;</code>

<code>        </code><code>dt.Rows.Add(dr);</code>

<code>        </code><code>dr[</code><code>"id"</code><code>] = 2;</code>

<code>        </code><code>dr[</code><code>"num1"</code><code>] = 40;</code>

<code>        </code><code>dr[</code><code>"num2"</code><code>] = 30;</code>

<code>        </code><code>this</code><code>.GridView1.DataSource = dt.DefaultView;</code>

<code>        </code><code>this</code><code>.GridView1.DataBind();</code>

<code>    </code><code>}</code>

<code>}</code>

前台頁面body部分:

29

30

31

32

33

34

35

<code>&lt;</code><code>body</code><code>&gt;</code>

<code>    </code><code>&lt;</code><code>form</code> <code>id</code><code>=</code><code>"form1"</code> <code>runat</code><code>=</code><code>"server"</code><code>&gt;</code>

<code>        </code><code>&lt;</code><code>div</code><code>&gt;</code>

<code>            </code><code>&lt;</code><code>asp:GridView</code> <code>ID</code><code>=</code><code>"GridView1"</code> <code>runat</code><code>=</code><code>"server"</code> <code>AutoGenerateColumns</code><code>=</code><code>"false"</code><code>&gt;</code>

<code>                </code><code>&lt;</code><code>Columns</code><code>&gt;</code>

<code>                    </code><code>&lt;</code><code>asp:TemplateField</code> <code>HeaderText</code><code>=</code><code>"狀态"</code><code>&gt;</code>

<code>                        </code><code>&lt;</code><code>ItemTemplate</code><code>&gt;</code>

<code>                            </code><code>&lt;</code><code>asp:CheckBox</code> <code>ID</code><code>=</code><code>"checkstate"</code> <code>runat</code><code>=</code><code>"server"</code> <code>/&gt;</code>

<code>                        </code><code>&lt;/</code><code>ItemTemplate</code><code>&gt;</code>

<code>                    </code><code>&lt;/</code><code>asp:TemplateField</code><code>&gt;</code>

<code>                    </code><code>&lt;</code><code>asp:TemplateField</code> <code>HeaderText</code><code>=</code><code>"編号"</code><code>&gt;</code>

<code>                            </code><code>&lt;</code><code>asp:Label</code> <code>ID</code><code>=</code><code>"lblId"</code> <code>runat</code><code>=</code><code>"server"</code><code>&gt; &lt;%#Eval("id") %&gt;&lt;/</code><code>asp:Label</code><code>&gt;</code>

<code>                    </code><code>&lt;</code><code>asp:TemplateField</code> <code>HeaderText</code><code>=</code><code>"數字1"</code><code>&gt;</code>

<code>                            </code><code>&lt;</code><code>asp:Label</code> <code>ID</code><code>=</code><code>"lblNum1"</code> <code>runat</code><code>=</code><code>"server"</code><code>&gt; &lt;%#Eval("num1") %&gt;&lt;/</code><code>asp:Label</code><code>&gt;</code>

<code>                    </code><code>&lt;</code><code>asp:TemplateField</code> <code>HeaderText</code><code>=</code><code>"數字2"</code><code>&gt;</code>

<code>                            </code><code>&lt;</code><code>asp:Label</code> <code>ID</code><code>=</code><code>"lblNum2"</code> <code>runat</code><code>=</code><code>"server"</code><code>&gt; &lt;%#Eval("num2") %&gt;&lt;/</code><code>asp:Label</code><code>&gt;</code>

<code>                    </code><code>&lt;</code><code>asp:TemplateField</code> <code>HeaderText</code><code>=</code><code>"平均值"</code><code>&gt;</code>

<code>                            </code><code>&lt;</code><code>asp:TextBox</code> <code>ID</code><code>=</code><code>"avg_value"</code> <code>runat</code><code>=</code><code>"server"</code> <code>/&gt;</code>

<code>                </code><code>&lt;/</code><code>Columns</code><code>&gt;</code>

<code>            </code><code>&lt;/</code><code>asp:GridView</code><code>&gt;</code>

<code>        </code><code>&lt;/</code><code>div</code><code>&gt;</code>

<code>    </code><code>&lt;/</code><code>form</code><code>&gt;</code>

<code>&lt;/</code><code>body</code><code>&gt;</code>

關鍵的在頁面的head部分,輸入如下代碼就可以實作如圖效果了。

<code>&lt;script src=</code><code>"js/jquery-1.4.2.js"</code><code>&gt;&lt;/script&gt;</code>

<code>&lt;script type=</code><code>"text/javascript"</code><code>&gt;</code>

<code>    </code><code>$(</code><code>function</code> <code>() {</code>

<code>        </code><code>$(</code><code>"#&lt;%=GridView1.ClientID%&gt;"</code><code>).find(</code><code>"tr td input[type=checkbox]"</code><code>).each(</code><code>function</code> <code>() {</code>

<code>            </code><code>$(</code><code>this</code><code>).bind(</code><code>"click"</code><code>, </code><code>function</code> <code>() {</code>

<code>                </code><code>if</code> <code>(</code><code>this</code><code>.checked) {</code>

<code>                    </code><code>var</code> <code>id = $(</code><code>this</code><code>).parent().parent().find(</code><code>"span[id*=lblId]"</code><code>).text();</code>

<code>                    </code><code>var</code> <code>num1 = $(</code><code>this</code><code>).parent().parent().find(</code><code>"span[id*=lblNum1]"</code><code>).text();</code>

<code>                    </code><code>var</code> <code>num2 = $(</code><code>this</code><code>).parent().parent().find(</code><code>"span[id*=lblNum2]"</code><code>).text();</code>

<code>             </code> 

<code>                    </code><code>var</code> <code>result = (parseFloat(num1) + parseFloat(num2)) / 2;</code>

<code>                    </code><code>$(</code><code>this</code><code>).parent().parent().find(</code><code>"input[id*=avg_value]"</code><code>).val(result);</code>

<code>                </code><code>} </code><code>else</code> <code>{</code>

<code>                    </code><code>$(</code><code>this</code><code>).parent().parent().find(</code><code>"input[id*=avg_value]"</code><code>).val(</code><code>""</code><code>);</code>

<code>                </code><code>}</code>

<code>            </code><code>});</code>

<code>    </code><code>});</code>

<code>&lt;/script&gt;</code>

你會發現JQuery的代碼讀着很輕松,很容易了解。而且代碼也很優美,最關鍵的是相容性很好。

再附一個簡單點的例子,這是一個靜态html頁面,看JQuery是如何發揮威力的。效果是點選每一行的按鈕時,彈出目前行的text裡面的value。

<code>&lt;</code><code>html</code><code>&gt;</code>

<code>&lt;</code><code>head</code><code>&gt;</code>

<code>&lt;</code><code>script</code> <code>type</code><code>=</code><code>"text/javascript"</code> <code>src</code><code>=</code><code>"jquery-1.4.2.js"</code><code>&gt;&lt;/</code><code>script</code><code>&gt;</code>

<code>  </code><code>&lt;</code><code>script</code> <code>type</code><code>=</code><code>"text/javascript"</code><code>&gt;</code>

<code>        </code><code>$(function(){</code>

<code>            </code><code>$("table tr td").each(function(){</code>

<code>                </code><code>$(this).find("[type=button]").click(function(){</code>

<code>                    </code><code>alert($(this).parent().parent().find("[type=text]").val());</code>

<code>                </code><code>});</code>

<code>  </code><code>&lt;/</code><code>script</code><code>&gt;</code>

<code>&lt;/</code><code>head</code><code>&gt;</code>

<code>&lt;</code><code>table</code><code>&gt;</code>

<code>  </code><code>&lt;</code><code>tr</code><code>&gt;</code>

<code>   </code><code>&lt;</code><code>td</code><code>&gt;1&lt;/</code><code>td</code><code>&gt;</code>

<code>   </code><code>&lt;</code><code>td</code><code>&gt;&lt;</code><code>input</code> <code>type</code><code>=</code><code>text</code>  <code>value</code><code>=</code><code>"資料1"</code> <code>/&gt;&lt;/</code><code>td</code><code>&gt;</code>

<code>   </code><code>&lt;</code><code>td</code><code>&gt;&lt;</code><code>input</code> <code>type</code><code>=</code><code>button</code>   <code>value</code><code>=</code><code>"擷取"</code> <code>/&gt;&lt;/</code><code>td</code><code>&gt;</code>

<code>  </code><code>&lt;/</code><code>tr</code><code>&gt;</code>

<code>   </code><code>&lt;</code><code>td</code><code>&gt;2&lt;/</code><code>td</code><code>&gt;</code>

<code>   </code><code>&lt;</code><code>td</code><code>&gt;&lt;</code><code>input</code> <code>type</code><code>=</code><code>text</code>  <code>value</code><code>=</code><code>"資料2"</code> <code>/&gt;&lt;/</code><code>td</code><code>&gt;</code>

<code>&lt;/</code><code>table</code><code>&gt;</code>

<code>&lt;/</code><code>html</code><code>&gt;</code>

試想,如果我們用js去做,将會很麻煩,而且還要考慮各種浏覽器的相容性。看到這裡不得不感歎一句,JQuery雖然短小,但是相當強大啊。

本文轉自 guwei4037  51CTO部落格,原文連結:http://blog.51cto.com/csharper/1345977

繼續閱讀