在Gridview中绑定7000条记录需要更多时间。 [英] Bind 7000 records in Gridview takes more time.

查看:66
本文介绍了在Gridview中绑定7000条记录需要更多时间。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用gridview绑定7000条记录,并使用文本框搜索记录需要更多时间才能加载。



< b> 下面我附上了编码



Javascript



I am using gridview to bind 7000 records and am using textbox to search records it s took more time to load.

Below i have attached Coding

Javascript

function BindMembersDetails()
    {
        // to call c# funstion        
       __doPostBack('<%=lnktxtsearch.ClientID %>', '');
    }







Asp.net
<asp:TextBox type="text" placeholder="Search..." class="textbox" runat="server" ID="txtSearchKey" onkeyup="BindMembersDetails()" autofocus></asp:TextBox></div> 


  <asp:GridView ID="grdMemDasboard" runat="server" class="grid grdHouseKeeping" AutoGenerateColumns="false"

                CellPadding="0" BorderColor="#cccccc" CellSpacing="0" BorderWidth="0" EmptyDataText="No Items Added"

                onsorting="grdDasboard_Sorting"

                   AllowSorting="true">
                <%--AllowPaging="true" OnPageIndexChanging="grdItemMaster_PageIndexChanging" PagerSettings-Position="Bottom" PageSize="40" --%>
                <Columns>
                    <asp:TemplateField ItemStyle-CssClass="gridCourse" HeaderStyle-CssClass="gridCourse  gridCourseHeader" HeaderText="Membership Id" Visible="false">                       
                        <ItemTemplate>
                            <asp:LinkButton runat="server" ID="lblMembershipId" Text='<%#Eval("MembershipID") %>' ></asp:LinkButton>
                        </ItemTemplate>
                    </asp:TemplateField>
                   
              etc.....

                </Columns>
            <%--    <PagerSettings FirstPageText="First" Mode="NumericFirstLast" LastPageText="Last"
                    PageButtonCount="7" NextPageText="Next" PreviousPageText="Previous" />--%>
            </asp:GridView>

// Repeater for paging 
  <asp:Repeater ID="rptPager" runat="server" >
            <ItemTemplate>
                <asp:LinkButton ID="lnkPage" runat="server" Text = '<%#Eval("Text") %>' CommandArgument = '<%# Eval("Value") %>' Enabled = '<%# Eval("Enabled") %>' OnClick = "Page_Changed"></asp:LinkButton> <%--OnClick = "Page_Changed"--%>
                <asp:HiddenField ID="hdnValue" runat="server" Value='<%# Eval("Value") %>'/>
            </ItemTemplate>
            </asp:Repeater>      
            </div>







Stored Procedure
SELECT ROW_NUMBER() OVER(ORDER BY MM.MemberID DESC) AS RowNumber,
MCM.CategoryName as MembershipName,
      --(case when ISNULL(MCM.IsCorporate,0) = 0 then MM.MemberCode  when ISNULL(MCM.IsCorporate,0) = 1 then (select t.memcode   from @temp t where t.memeberid=mm.MemberID ) end) as MemberCode --MM.MemberCode   
	  MD.MemberCode as MemberCode
	  ,MCM.CategoryID
      ,MM.MemberID  as MembershipID
      ,GU.CardName as PrimaryMember
	  ,(select Count(memberid) from Mem.MemberDetails MD where MD.MemberID=MM.MemberID) as TotalPax --case when isnull(MCM.IsCorporate,0)=0 then '' else MCM.NoOfPax end as TotalPax
	  ,case when MM.Approverflag=1 then 'Approved' when MM.Approverflag=2 then 'Rejected'  else 'Pending' end as [Approval]   
      ,[MembershipCategoryID]
      ,CONVERT(varchar(50),ExpiryDate,103) as ExpiryDate 
	  ,[SecurityDeposit]
	  ,[EntranceFee]
      ,[CorporateName]
      ,[TotalAmount]      
      ,ISNULL(md.[Balance],0.00) as Balance
	  , MCM.IsCorporate  
	  ,(case when ISNULL(MCM.IsCorporate,0) = 1 then MM.CorporateID  when ISNULL(MCM.IsCorporate,0) = 0 then '0' end) as CorporateID  --MM.MemberID
	  , MM.IsActive as IsActive
	  , MD.MemberCode as memcode
	  --,(Select Description from Mem.MemberShipStatusMaster where StatusCode=MM.StatusCode) as Status
     ,case when MM.[IsActive]=1 then 'Active' else 'In-Active' end as [Status]
	 INTO #Results
  FROM [Mem].[MemberMaster] MM 
  inner join [Mem].MembershipCategoryMaster MCM on MCM.CategoryID=MM.MembershipCategoryID
  inner join [Mem].MemberDetails MD on MD.MemberID=MM.MemberID
  inner join [dbo].Guest Gu on GU.guestID=MD.GuestID ORDER BY MD.MemberID desc 
      SELECT @RecordCount = COUNT(*)
      FROM #Results
      SELECT * FROM #Results
      WHERE RowNumber BETWEEN(@PageIndex -1) * @PageSize + 1 AND(((@PageIndex -1) * @PageSize + 1) + @PageSize) - 1
      DROP TABLE #Results

推荐答案

你要做的只是一个大滥用。用户希望看到7000条记录?您需要创建一些替代设计。比如说,查询可以设计为一次只允许有限数量的记录。一个非常常见的解决方案是分页

如何在ASP.NET中的GridView控件中实现分页 [ ^ ],

http://www.c-sharpcorner.com/UploadFile/rohatash/gridview-paging-sample-in-Asp-净 [ ^ ]。



-SA
What you are trying to do is simply one big abuse. What user will want to see 7000 records? You need to create some alternative design. Say, the query can be designed to allow only limited number of records at a time. One very usual solution is paging:
How To Implement Paging in GridView Control in ASP.NET[^],
http://www.c-sharpcorner.com/UploadFile/rohatash/gridview-paging-sample-in-Asp-Net[^].

—SA


这篇关于在Gridview中绑定7000条记录需要更多时间。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆