成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

淺析在Ajax和jQuery中實(shí)現(xiàn)GridView展開與合并

開發(fā) 開發(fā)工具
這里將介紹在Ajax和jQuery中實(shí)現(xiàn)GridView展開與合并,這里講以會(huì)員訂單處理為標(biāo)準(zhǔn),希望本文能對(duì)大家有所幫助。

GridView展開與合并在Ajax和jQuery中實(shí)現(xiàn),主要是三大步驟,包括使用用戶控件(CustomerOrders.ascx)展示訂單列表、新建一個(gè)簡單頁面GridViewDrillDownjQueryQAjax.aspx以及在頁面GridViewDrillDownjQueryQAjax.aspx新建兩個(gè)DIV。

需求簡介:電子商務(wù)網(wǎng)站中,查詢會(huì)員的訂單,點(diǎn)擊“會(huì)員”,展現(xiàn)此會(huì)員的訂單列表。

界面操作:

Step 1 展現(xiàn)會(huì)員列表,如下圖

展現(xiàn)會(huì)員列表

Step 2 點(diǎn)擊“某一會(huì)員”行 展現(xiàn)會(huì)員訂單列表

展現(xiàn)會(huì)員訂單列表

實(shí)現(xiàn)思路:

1、  使用用戶控件(CustomerOrders.ascx)展示訂單列表,此用戶控件只需要包含Repeater控件并綁定數(shù)據(jù)源

2、  新建一個(gè)簡單頁面GridViewDrillDownjQueryQAjax.aspx,在此頁面引用用戶控件,展示用戶訂單列表

3、  在頁面GridViewDrillDownjQueryQAjax.aspx新建兩個(gè)DIV:一個(gè)用來展示會(huì)員信息,一個(gè)用來展示某個(gè)會(huì)員的訂單信息。當(dāng)點(diǎn)擊某一會(huì)員信息時(shí),展示此會(huì)員的訂單列表

實(shí)現(xiàn)細(xì)節(jié):

1、  新建用戶控件(CustomerOrders.ascx),拖數(shù)據(jù)源控件 和 Repeater控件到頁面,主要代碼如下

在用戶控件的后臺(tái)代碼中有一屬性CustomerId,它主要用來傳遞參數(shù)

  1. Code  
  2. <asp:SqlDataSource ID="sqlDsOrders" runat="server" ConnectionString="<%$ ConnectionStrings:Northwind %>" 
  3. SelectCommand="SELECT [OrderID], [OrderDate], [RequiredDate], [Freight], [ShippedDate] FROM [Orders] WHERE ([CustomerID] = @CustomerID)"> 
  4. <SelectParameters> 
  5. <asp:Parameter Name="CustomerID" Type="String" DefaultValue="" /> 
  6. </SelectParameters> 
  7. </asp:SqlDataSource> 
  8. <asp:Repeater ID="List" DataSourceID="sqlDsOrders" runat="server"> 
  9. <HeaderTemplate> 
  10. <table class="grid" cellspacing="0" rules="all" border="1" style="border-collapse: collapse;"> 
  11. <tr> 
  12. <th scope="col">&nbsp;</th> 
  13. <th scope="col">Order ID</th> 
  14. <th scope="col">Date Ordered</th> 
  15. <th scope="col">Date Required</th> 
  16. <th scope="col" style="text-align: right;">Freight</th> 
  17. <th scope="col">Date Shipped</th> 
  18. </tr> 
  19. </HeaderTemplate> 
  20. <ItemTemplate> 
  21. <tr class='<%# (Container.ItemIndex%2==0) ? "row" : "altrow" %>'> 
  22. <td class="rownum"><%# Container.ItemIndex+1 %></td> 
  23. <td style="width: 80px;"><%# Eval("OrderID") %></td> 
  24. <td style="width: 100px;"><%# Eval("OrderDate","{0:dd/MM/yyyy}") %></td> 
  25. <td style="width: 110px;"><%# Eval("RequiredDate", "{0:dd/MM/yyyy}")%></td> 
  26. <td style="width: 50px; text-align: right;"><%# Eval("Freight","{0:F2}") %></td> 
  27. <td style="width: 100px;"><%# Eval("ShippedDate", "{0:dd/MM/yyyy}")%></td> 
  28. </tr> 
  29. </ItemTemplate> 
  30. <FooterTemplate> 
  31. </table> 
  32. </FooterTemplate> 
  33. </asp:Repeater> 

2、 重寫用戶控件(CustomerOrders.ascx)的OnLoad處理事件,代碼如下:

  1. Code  
  2. protected override void OnLoad(EventArgs e)  
  3. {  
  4. this.sqlDsOrders.SelectParameters["CustomerID"].DefaultValue = this.CustomerId;  
  5. base.OnLoad(e);  

 

3、  新建一個(gè)簡單頁面GridViewDrillDownjQueryQAjax.aspx,在此頁面引用用戶控件(CustomerOrders.ascx),展示用戶訂單列表。下面的后臺(tái)方法主要用來根據(jù)會(huì)員編號(hào)(CustomerId)獲得會(huì)員的訂單列表。

  1. Code  
  2. [System.Web.Services.WebMethod()]  
  3. public static string GetOrders(string customerId)  
  4. {  
  5. System.Threading.Thread.Sleep(500);  
  6. Page page = new Page();  
  7. CustomerOrders ctl = (CustomerOrders)page.LoadControl("~/CustomerOrders.ascx");  
  8. ctl.CustomerId = customerId;  
  9. page.Controls.Add(ctl);  
  10. System.IO.StringWriter writer = new System.IO.StringWriter();  
  11. HttpContext.Current.Server.Execute(page, writer, false);  
  12. string output = writer.ToString();  
  13. writer.Close();  
  14. return output;  

以上3步主要完成的是后臺(tái)代碼,那么接下來我們需要做的是: 使用Ajax讀取數(shù)據(jù)并折疊展示。

4、  在頁面(GridViewDrillDownjQueryQAjax.aspx)新建兩個(gè)Div 如下:

第一個(gè)Div用來展示會(huì)員信息,第二個(gè)Div用來展示此會(huì)員下的訂單列表。當(dāng)用點(diǎn)擊會(huì)員信息時(shí)(第一個(gè)Div),初始化Ajax請(qǐng)求并返回html代碼到第二個(gè)Div,展示此會(huì)員的訂單列表。

  1. Code  
  2. <asp:GridView Width="100%" AllowPaging="True" ID="gvCustomers" AutoGenerateColumns="False" 
  3. DataSourceID="sqlDsCustomers" runat="server" ShowHeader="False"> 
  4. <Columns> 
  5. <asp:TemplateField> 
  6. <ItemTemplate> 
  7. <div class="group" style="display:inline" id='<%#String.Format("customer{0}",Container.DataItemIndex) %>'   
  8. onclick='showhide(<%#String.Format("\"#customer{0}\"",Container.DataItemIndex) %>,  
  9. <%#String.Format("\"#order{0}\"",Container.DataItemIndex) %>,  
  10. <%#String.Format("\"{0}\"",Eval("CustomerID")) %>)'> 
  11. <asp:Image ID="imgCollapsible" CssClass="first" ImageUrl="~/Assets/img/plus.png" 
  12. Style="margin-right: 5px;" runat="server" /><span class="header"> 
  13. <%#Eval("CustomerID")%>:  
  14. <%#Eval("CompanyName")%>(<%#Eval("TotalOrders")%> Orders) </span> 
  15. </div>                                                          
  16. <div id='<%#String.Format("order{0}",Container.DataItemIndex) %>' class="order"></div> 
  17. </ItemTemplate> 
  18. </asp:TemplateField> 
  19. </Columns> 
  20. </asp:GridView> 

5、第一個(gè)Divi的客戶端點(diǎn)擊事件處理代碼調(diào)用showhide(div1Id,div2Id,customerId)方法,主要代碼如下:

  1. Code  
  2. function showhide(master,detail,customerId)  
  3. {   
  4. //First child of master div is the image  
  5. var src = $(master).children()[0].src;  
  6. //Switch image from (+) to (-) or vice versa.  
  7. if(src.endsWith("plus.png"))  
  8. srcsrc = src.replace('plus.png','minus.png');  
  9. else  
  10. srcsrc = src.replace('minus.png','plus.png');  
  11. //if the detail DIV is empty Initiate AJAX Call, if not that means DIV already populated with data               
  12. if($(detail).html() == "")  
  13. {  
  14. //Prepare Progress Image  
  15. var $offset = $(master).offset();  
  16. $('#progress').css('visibility','visible');  
  17. $('#progress').css('top',$offset.top);  
  18. $('#progress').css('left',$offset.left+$(master).width());                      
  19. //Prepare Parameters  
  20. var params = '{customerId:"'+ customerId +'"}';                      
  21. //Issue AJAX Call  
  22. $.ajax({  
  23. type: "POST", //POST  
  24. url: "GridViewDrillDownjQueryAjax.aspx/GetOrders", //Set call to Page Method  
  25. data: params, // Set Method Params  
  26. beforeSend: function(xhr) {  
  27. xhr.setRequestHeader("Content-type", "application/json; charset=utf-8");},  
  28. contentType: "application/json; charset=utf-8", //Set Content-Type  
  29. dataType: "json", // Set return Data Type  
  30. success: function(msg, status) {  
  31. $('#progress').css('visibility','hidden');  
  32. $(master).children()[0].src = src;  
  33. $(detail).html(msg);  
  34. $(detail).slideToggle("normal"); // Succes Callback  
  35. },  
  36. error: function(xhr,msg,e){  
  37. alert(msg);//Error Callback  
  38. }  
  39. });  
  40. }  
  41. else  
  42. {  
  43. //Toggle expand/collapse                     
  44. $(detail).slideToggle("normal");  
  45. $(master).children()[0].src = src;  
  46. }  

解釋:

type: 請(qǐng)求方式使用“post”

url:   請(qǐng)求的URL

data:  要傳的參數(shù)

beforeSend:請(qǐng)求發(fā)送之前所要做的操作

contentType: 設(shè)置contentType為application/json; charset=utf-8

datatype: 設(shè)置返回類型為 json

success:請(qǐng)求成功返回正確的結(jié)果后 所要操作的事情,比如向第二個(gè)div追加訂單列表html代碼,然后滑動(dòng)展示。

Error: 請(qǐng)求失敗,彈出失敗信息

至此,使用Ajax和Jquery實(shí)現(xiàn)GridView的展開和合并完畢。

英文地址:http://mosesofegypt.net/post/GridView-Grouping-Master-Detail-Drill-Down-Using-jQuery-AJAX.aspx

原文標(biāo)題:使用Ajax和Jquery實(shí)現(xiàn)GridView的展開、合并

鏈接:http://www.cnblogs.com/ywqu/archive/2009/09/06/1561420.html

【編輯推薦】

  1. jQuery調(diào)用WCF服務(wù)傳遞JSON對(duì)象
  2. 學(xué)習(xí)jQuery必須知道的幾種常用方法
  3. 用XML+XSLT+CSS+JQuery組建ASP.NET網(wǎng)站
  4. 使用jQuery和PHP構(gòu)建一個(gè)受Ajax驅(qū)動(dòng)的Web頁面
  5. jQuery調(diào)用WCF需要注意的一些問題
責(zé)任編輯:彭凡 來源: 博客園
相關(guān)推薦

2009-06-26 13:46:13

Struts

2011-05-18 13:28:46

jQueryPHPAJAX

2009-07-01 09:17:36

對(duì)象比較Java

2016-09-07 20:56:24

2009-07-24 11:01:12

jQuery框架

2009-08-03 18:29:31

GridView與Da

2009-07-24 13:41:15

ASP.NET AJA

2009-09-03 18:45:06

GridView格式化

2012-05-14 10:18:54

jQuery

2012-02-08 17:01:36

2009-03-13 09:48:33

ASP.NETAjaxJQuery

2009-07-28 16:08:43

ASP.NET AJA

2009-09-23 17:19:19

jQuery頁面漸顯效

2012-04-09 10:34:21

jQuery

2012-08-08 13:50:28

jQuery

2009-09-28 13:23:54

HTTP編程

2018-01-04 15:50:44

深度學(xué)習(xí)自然語言機(jī)器學(xué)習(xí)

2011-04-13 15:03:25

NATlP

2009-06-16 15:20:48

ApplicationJSP程序

2009-09-27 10:43:13

C#合并多個(gè)WORD文
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 欧美日韩18 | 涩爱av一区二区三区 | 日韩精品一区二区三区久久 | 中文字字幕在线中文乱码范文 | 天天操夜夜操免费视频 | 亚洲成人自拍 | 日韩一区二区三区在线视频 | 亚洲视频欧美视频 | 亚洲成人av | 国外成人在线视频 | 久久日韩精品 | 亚洲国产中文字幕 | 国产一区二区在线播放视频 | 国产精品揄拍一区二区久久国内亚洲精 | 日韩在线不卡 | 免费视频一区二区 | 91亚洲精选 | 国产黄色小视频在线观看 | 久青草影院 | 看片国产 | 国产午夜高清 | 一区二区三区欧美 | 欧美成ee人免费视频 | 不用播放器看的av | 久久久一区二区 | 自拍视频一区二区三区 | 日本特黄a级高清免费大片 特黄色一级毛片 | 日韩成人在线观看 | 视频一区二区在线观看 | 视频一区中文字幕 | www国产成人免费观看视频,深夜成人网 | 久久99精品国产自在现线小黄鸭 | 国产精品久久久久无码av | 日韩午夜在线播放 | 久久性色 | 精品国产视频在线观看 | 免费黄色日本 | 欧美日韩在线一区二区 | 91视频入口| 欧美日韩三区 | 欧美偷偷 |