【问题标题】:load specific gridview row on page load在页面加载时加载特定的 gridview 行
【发布时间】:2014-02-13 10:57:12
【问题描述】:

编辑:我通过在我的网格视图中包含一个过滤器表达式和一个用于搜索的文本框来解决问题。这样我就可以直接传递搜索查询,而无需做各种花哨的事情。


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

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

它将 CompanyID 传递到我的主页 (CompanyActive),在那里我有一个带有分页的网格视图。

但是我的问题是它没有转到记录所在的特定页面/位置。它只显示第一页。

我认为我需要在 CompanyActive 上的页面加载事件中添加某种代码,但我不知道应该使用哪些命令。

【问题讨论】:

  • 发布您的导航页面代码。
  • 导航页代码?你的意思是我的gridview的寻呼机设置?
  • 您的意思是要显示特定 id 存在的页面?
  • 正确的Jumpei。如果我有 1000 条记录并且记录 #500 位于第 10 页,我希望它在单击链接时转到第 10 页。

标签: c# asp.net gridview


【解决方案1】:

您是否使用数据表来填充您的网格视图?

如果是这样并且您知道 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

【讨论】:

  • 无数据表。我的 gridview 中的所有内容都是通过 sqldatasource 填充的。 ID 永远不会改变,因为它是我数据库中的主键。
  • 好的,在这种情况下,您知道确切的 ID 后,该文章应该仍然有效
  • 但是如何将代码绑定到两个单独的页面?我有两个网站,搜索和 companyactive。超链接位于搜索中。这篇文章是关于网格视图和按钮是否位于同一页面上。还是我完全弄错了?
  • 是的,不是的,基本上这篇文章讨论的是同一个页面,但是您可以将它作为查询字符串传递给新页面,并在新页面集的页面加载时调用它并使用它。我已经更新了我的答案
猜你喜欢
  • 2023-03-10
  • 2017-04-04
  • 1970-01-01
  • 1970-01-01
  • 2011-09-27
  • 1970-01-01
  • 2013-12-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多