我的数据非常庞大因此,我需要逐个获取数据以加速页面行为。
我有这个Gridview
<asp:GridView ID="gvValues" runat="server" Width="100%" AllowPaging="True"
PagerSettings-Mode="NumericFirstLast" OnRowCommand="gvValues_RowCommand"
AutoGenerateColumns="False" CellPadding="0" PageSize="15"
OnRowDataBound="gvValues_RowDataBound" OnPageIndexChanging="gvValues_PageIndexChanging" >
功能
private void FillData()
{
var pagesize = gvValues.PageSize;
var pageindex = gvValues.PageIndex;
products = ProductBLL.GetProductsByStoreIDcust(storeId, null,
out totalRecords, pageindex, pagesize, keyword, txtSearchBarcode.Text);
gvValues.DataSource = products;
gvValues.DataBind();
}
此函数在加载中填充GridView,再次在
中填充protected void gvValues_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
gvValues.PageIndex = e.NewPageIndex;
this.FillData();
}
此函数从数据库中获取数据
public static List<Product> GetProductsByStoreIDcust(int? StoreID, ProductLocation? location , out int totalRecords, int itemsToSkip,
int pageSize , string search = "", string barcode = "", string Relations = "no" )
{ totalRecords = products.Count();
if (products.Count() > 0)
return products.Skip(itemsToSkip).Take(pageSize).ToList();
else
return null;
}
我怎样才能获得
var pageCount = query.Count();
现在,此gridview正确显示前15项,
但是gridview下的分页消失了,我的代码中缺少的内容请帮助
答案 0 :(得分:0)
尝试在页面代码中添加此内容:
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
this.FillData();
}
}
好的,看看这个project
答案 1 :(得分:0)
您需要执行查询才能获取所有记录。所以你有记录号,页面大小,你可以计算页数。使用它们,您可以构建自己的寻呼机(使用转发器或寻呼机控制 - 从3.5开始)
然后您可以使用您的代码获取当前页面中的记录。
我建议您也可以使用其他插件https://datatables.net/