在页面加载时加载特定的gridview行

时间:2014-02-13 10:57:13

标签: c# asp.net gridview

编辑:我通过在gridview上添加filterexpression和搜索文本框来解决问题。这样我就可以直接传递搜索查询,而无需做各种花哨的事情。


我做了一个基本的搜索功能。在该搜索功能中,我添加了一个超链接以查看更多信息:

<asp:HyperLink ID="lnkSelect" runat='server' NavigateUrl='<%# String.Format("~/CompanyActive.aspx?id={0}", Eval("CompanyID")) %>'>Select</asp:HyperLink>

它将CompanyID传递给我的主页(CompanyActive),在那里我有一个带分页的gridview。

但是我的问题是它没有进入记录所在的特定页面/地方。它只显示第一页。

我想我需要将一些代码放到CompanyActive上的pageload事件中,但我不知道应该使用哪些命令。

1 个答案:

答案 0 :(得分:2)

您使用数据表来填充gridview吗?

如果是,并且您知道ID不会改变,您可以对记录ID进行导航

这是指向Stackoverflow上类似问题的链接

How to go to particular record in gridview

希望这有帮助

马丁

实施例

您正在使用此链接按钮

<asp:HyperLink ID="lnkSelect" runat='server' NavigateUrl='<%# String.Format("~/CompanyActive.aspx?id={0}", Eval("CompanyID")) %>'>Select</asp:HyperLink>

使用其他文章中的代码只需像这样修改代码

 private void BindProductGrid()
    {
product ID = Request.QueryString["id"]; // id is the name same as what you passed as a querystring 
        DataTable tblProducts = getAllProducts();
        GridProducts.DataSource = tblProducts;
        bool needsPaging = (tblProducts.Rows.Count / GridProducts.PageSize) > 1;

        if (ProductID == -1)
        {
            this.GridProducts.PageIndex = 0;
            this.GridProducts.SelectedIndex = -1;
        }
        else
        {
            int selectedIndex = tblProducts.AsEnumerable()
                .Select((Row, Index) => new { Row, Index })
                .Single(x => x.Row.Field<int>("ProductID") == ProductID).Index;
            int pageIndexofSelectedRow = (int)(Math.Floor(1.0 * selectedIndex / GridProducts.PageSize));
            GridProducts.PageIndex = pageIndexofSelectedRow;
            GridProducts.SelectedIndex = (int)(GridProducts.PageIndex == pageIndexofSelectedRow ? selectedIndex % GridProducts.PageSize : -1);
        }
        GridProducts.DataBind();
    }

这样,ID就是您从其他页面传递的公司ID