如何通过QueryString筛选绑定到GridView控件的数据



我是一名新的ASP.NET Web Forms开发人员,现在我正在努力寻找根据QueryString值筛选数据的最佳方法将其绑定到GridView控件。我正在将GridView绑定到GetData()方法,我想在基于如果存在QueryString,则对QueryString的值执行那么我应该在BindGrid()方法或Page_Load()方法?我该怎么做

供您参考,GridView具有分页功能,如下面的代码所示。

以下是GetData()的C#代码:

public IEnumerable<Item> getData(Item itemObj)
    {
        List<Item> itemList = new List<Item>();
        using (ATMSEntities context = new ATMSEntities())
        {
            itemList = (from item in context.Item
                       select new Item()
                       {
                           ItemId = item.ItemId,
                           Name = item.Name,
                       }).ToList();
            if (itemObj.ItemId != 0)
            {
                itemList = itemList.Where(item => item.ItemId == itemObj.ItemId).ToList();
            }
        }
    }
        return itemList;
}

下面是带有GridView控件的aspx页面的代码:

protected void Page_Load(object sender, EventArgs e)
{
    if(Request.QueryString["ItemId"] != null) //the filtration is not working here.
    {
        bindGrid();
    }
}
    private void bindGrid()
    {
        Item itemObj = new Item();
        var result = itemObj.getData(itemObj).ToList();
        gvItems.DataSource = itemObj.getData(itemObj);
        gvItems.DataBind();
    }

    protected void gvItems_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        gvItems.PageIndex = e.NewPageIndex;
        bindGrid();
    }

提前感谢您的帮助。

您没有使用QueryString值来过滤列表项。你应该做的是这个

private void bindGrid()
{
    Item itemObj = new Item();
    if(Request.QueryString["ItemId"] != null) 
    {
        itemObj.ItemId = Convert.ToInt32(Request.QueryString["ItemId"]);
    }
    var result = itemObj.getData(itemObj).ToList();
    gvItems.DataSource = itemObj.getData(itemObj);
    gvItems.DataBind();
}

最新更新