C# 页面加载时加载特定的gridview行

C# 页面加载时加载特定的gridview行,c#,asp.net,gridview,C#,Asp.net,Gridview,编辑:我通过在gridview中包含一个filterexpression和一个用于搜索的文本框解决了这个问题。这样我就可以直接通过搜索查询,而不必做任何花哨的事情 我已经做了一个基本的搜索函数。在该搜索功能中,我添加了一个超链接以查看更多信息: <asp:HyperLink ID="lnkSelect" runat='server' NavigateUrl='<%# String.Format("~/CompanyActive.aspx?id={0}", Eval("Company

编辑:我通过在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事件中添加一些代码,但我不知道应该使用哪些命令

是否使用数据表填充gridview

如果是这样,并且您知道ID不会改变,那么您可以在记录ID上进行导航

这里有一个关于Stackoverflow的类似问题的链接

希望这有帮助

马汀

范例

您正在使用此链接按钮

<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();
    }
private void BindProductGrid()
{
product ID=Request.QueryString[“ID”];//ID与作为QueryString传递的名称相同
DataTable TBLPProducts=getAllProducts();
GridProducts.DataSource=tblProducts;
bool needsPaging=(tblProducts.Rows.Count/GridProducts.PageSize)>1;
if(ProductID==-1)
{
this.GridProducts.PageIndex=0;
this.GridProducts.SelectedIndex=-1;
}
其他的
{
int selectedIndex=tblProducts.AsEnumerable()
.Select((行,索引)=>new{Row,Index})
.Single(x=>x.Row.Field(“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

发布您的导航页面代码。导航页面代码?你是说我的gridview寻呼机设置?你是说你想显示存在特定id的页面?正确。如果我有1000条记录,并且记录#500位于第#10页,我希望在单击链接时将其转到第10页。无数据表。gridview中的所有内容都是通过sqldatasource填充的。ID永远不会改变,因为它是我数据库中的主键。好吧,在这种情况下,这篇文章应该仍然有效,因为您知道确切的IDB。但是我如何将代码绑定到两个单独的页面?我有两个网站,搜索和公司活动。超链接位于搜索中。本文讨论的是gridview和按钮是否位于同一页面上。或者我完全弄错了?是的,不是的,基本上这篇文章讨论的是同一个页面,但是你可以将它作为查询字符串传递到一个新页面,在新页面集的页面加载中调用它并使用它。我已经更新了我的答案