ساخت گریدویو با صفحه بندی سفارشی
دوشنبه 29 تیر 1394در این مقاله شما با نحوه نمایش داده ها در گریدویو با صفحه بندی سفارشی آشنا خواهید شد. این روش بیشتر در بانک های اطلاعاتی فاقد رکورد استفاده می شود.
گاهی اوقات شما نیاز دارید که داده ها را در گریدویو نمایش دهید در حالی که آن داده شامل رکوردی نباشد. اگر تمامی داده ها را در یک زمان بخواهید نمایش دهید زمان زیادی می برد همچنین ممکن است با پیغام timed out error in application مواجه شوید. زمانی که ما نیاز به نمایش تنها تعدادی از رکوردها در گریدویو داریم و جداول بانک اطلاعاتی ما شامل رکوردی نیست پس بهتر است از صفحه بندی سفارشی به جای صفحه بندی پیش فرض استفاده نماییم.
Stored Procedure
CREATEPROCEDUREGetAll_Employees @pageIndexint, @pageSizeint, @totalRecordsintOUTPUT -- EXEC GetAll_Employees 1, 100,@totalRecords OUTPUT;PRINT @totalRecords AS BEGIN SELECT@totalRecords=COUNT(EmpID)FROMdbo.Employees SelectEmpID,EmpName,Desigantion,Address,Cityfrom ( Select Row_number()over(OrderbyEmpIDASC)asRowNo, EmpName,Desigantion,Address,City FROMdbo.Employees )ASEmp Where Emp.RowNobetween((@pageIndex- 1)*@pageSize)+ 1 and(@pageIndex*@pageSize) OrderbyEmpIDASC END
دیزاین گریدویو
<asp:GridViewIDasp:GridViewID="grdEmployee"runat="server"AutoGenerateColumns="false"> <Columns> <asp:BoundFieldHeaderTextasp:BoundFieldHeaderText="EmpID"DataField="EmpID"/> <asp:BoundFieldHeaderTextasp:BoundFieldHeaderText="EmpName"DataField="EmpName"/> <asp:BoundFieldHeaderTextasp:BoundFieldHeaderText="Address"DataField="Address"/> <asp:BoundFieldHeaderTextasp:BoundFieldHeaderText="City"DataField="City"/> </Columns> </asp:GridView> <br/> <asp:RepeaterIDasp:RepeaterID="rptPager"runat="server"> <ItemTemplate> <asp:LinkButtonCssClassasp:LinkButtonCssClass="abc"ID="lnkPage"runat="server"Text='<%#Eval("Text") %>'CommandArgument='<%# Eval("Value") %>'Enabled='<%# Eval("Enabled") %>'OnClick="Page_Changed"> </asp:LinkButton> </ItemTemplate> </asp:Repeater>
پر کردن گریدویو
privatevoid BindData(int pageIndex) { Int standardPageSize = 100; string constring = ConfigurationManager.ConnectionStrings["Azure_ContentManifest"].ConnectionString; using(SqlConnection con = newSqlConnection(constring)) { using(SqlCommand cmd = newSqlCommand("GetAll_Employees", con)) { cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.AddWithValue("@pageIndex", pageIndex); cmd.Parameters.AddWithValue("@pageSize", standardPageSize); cmd.Parameters.Add("@totalRecords", SqlDbType.Int, 4); cmd.Parameters["@totalRecords"].Direction = ParameterDirection.Output; con.Open(); DataReaderdr = cmd.ExecuteReader(); grdEmployee.DataSource = dr; grdEmployee.DataBind(); con.Close(); int recordCount = Convert.ToInt32(cmd.Parameters["@totalRecords"].Value); PopulatePager(recordCount, standardPageSize, pageIndex); } } }
پرکردن Pager/Pagination
protectedvoid Page_Changed(object sender, EventArgs e) { // link button click i.e page number int pageIndex = int.Parse((sender asLinkButton).CommandArgument); BindData(pageIndex); } privatevoid PopulatePager(int recordCount, int pageSize, int currentPage) { double dblPageCount = (double)((decimal) recordCount / (decimal) pageSize); int pageCount = (int) Math.Ceiling(dblPageCount); List < ListItem > pages = newList < ListItem > (); if (pageCount > 0) { pages.Add(newListItem("First", "1", currentPage > 1)); for (int i = 1; i <= pageCount; i++) { if ((i % 10 == 0)) { pages.Add(newListItem("...", i.ToString(), i != currentPage)); break; } pages.Add(newListItem(i.ToString(), i.ToString(), i != currentPage)); } pages.Add(newListItem("Last", pageCount.ToString(), currentPage < pageCount)); } rptPager.DataSource = pages; rptPager.DataBind(); }
شکل 1 : بارگذاری 10 صفحه اول
شکل 2 : بارگذاری 10 رکورد بعدی
- ASP.net
- 2k بازدید
- 6 تشکر