日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
淺析在Ajax和jQuery中實(shí)現(xiàn)GridView展開與合并

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

站在用戶的角度思考問(wèn)題,與客戶深入溝通,找到云浮網(wǎng)站設(shè)計(jì)與云浮網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、國(guó)際域名空間、雅安服務(wù)器托管、企業(yè)郵箱。業(yè)務(wù)覆蓋云浮地區(qū)。

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

界面操作:

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

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

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

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

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

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

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

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

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

 
 
 
 
  1. Code
  2.  ID="sqlDsOrders" runat="server" ConnectionString="<%$ ConnectionStrings:Northwind %>"
  3. SelectCommand="SELECT [OrderID], [OrderDate], [RequiredDate], [Freight], [ShippedDate] FROM [Orders] WHERE ([CustomerID] = @CustomerID)">
  4.  Name="CustomerID" Type="String" DefaultValue="" />
  5.  ID="List" DataSourceID="sqlDsOrders" runat="server">
  6.  class="grid" cellspacing="0" rules="all" border="1" style="border-collapse: collapse;">
  7.  scope="col"> 
  8.  scope="col">Order ID
  9.  scope="col">Date Ordered
  10.  scope="col">Date Required
  11.  scope="col" style="text-align: right;">Freight
  12.  scope="col">Date Shipped
  13.  class='<%# (Container.ItemIndex%2==0) ? "row" : "altrow" %>'>
  14.  class="rownum"><%# Container.ItemIndex+1 %>
  15.  style="width: 80px;"><%# Eval("OrderID") %>
  16.  style="width: 100px;"><%# Eval("OrderDate","{0:dd/MM/yyyy}") %>
  17.  style="width: 110px;"><%# Eval("RequiredDate", "{0:dd/MM/yyyy}")%>
  18.  style="width: 50px; text-align: right;"><%# Eval("Freight","{0:F2}") %>
  19.  style="width: 100px;"><%# Eval("ShippedDate", "{0:dd/MM/yyyy}")%>

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);
  6. }

3、  新建一個(gè)簡(jiǎn)單頁(yè)面GridViewDrillDownjQueryQAjax.aspx,在此頁(yè)面引用用戶控件(CustomerOrders.ascx),展示用戶訂單列表。下面的后臺(tái)方法主要用來(lá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;
  15. }

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

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

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

 
 
 
 
  1. Code
  2.  Width="100%" AllowPaging="True" ID="gvCustomers" AutoGenerateColumns="False"
  3. DataSourceID="sqlDsCustomers" runat="server" ShowHeader="False">
  4.  class="group" style="display:inline" id='<%#String.Format("customer{0}",Container.DataItemIndex) %>' 
  5. onclick='showhide(<%#String.Format("\"#customer{0}\"",Container.DataItemIndex) %>,
  6. <%#String.Format("\"#order{0}\"",Container.DataItemIndex) %>,
  7. <%#String.Format("\"{0}\"",Eval("CustomerID")) %>)'>
  8.  ID="imgCollapsible" CssClass="first" ImageUrl="~/Assets/img/plus.png"
  9. Style="margin-right: 5px;" runat="server" /> class="header">
  10. <%#Eval("CustomerID")%>:
  11. <%#Eval("CompanyName")%>(<%#Eval("TotalOrders")%> Orders) 
                                                        
  •  id='<%#String.Format("order{0}",Container.DataItemIndex) %>' class="order">
  • 5、第一個(gè)Divi的客戶端點(diǎn)擊事件處理代碼調(diào)用showhide(div1Id,div2Id,customerId)方法,主要代碼如下:

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

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


    本文名稱:淺析在Ajax和jQuery中實(shí)現(xiàn)GridView展開與合并
    當(dāng)前URL:http://www.5511xx.com/article/ccesjji.html