编辑:我通过在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事件中,但我不知道应该使用哪些命令。
答案 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