【问题标题】:Asp.Net: DetailsView Control - Sending user to specific pageAsp.Net:DetailsView 控件 - 将用户发送到特定页面
【发布时间】:2011-01-03 12:08:35
【问题描述】:

在经典 ASP 中,如果您想将用户发送到特定页面,您可以发送/创建一个 URL,例如:posts.asp?id=24 ...表示帖子的查询字符串。

好吧,在 asp.net 中使用绑定到数据集的 DetailsView 控件,我该如何做同样的事情? 在地址栏中,当我翻阅记录时,我看到的只是posts.aspx,没有查询字符串部分。当页面上的 detailsview 控件时,如何将用户发送到 posts.aspx?id=24。

注意:我有兴趣将用户发送到特定的 postid,而不是数据集中的特定索引。

问候 融化

【问题讨论】:

    标签: asp.net detailsview


    【解决方案1】:

    执行此操作的快速方法是将页面加载中的详细信息视图绑定为:

    string id = Request.QueryString["id"];
    if(!string.IsNullOrEmpty(id))
    {
       myDataSet.Filter = String.Format("id = {0}", id);
    }
    
    myDetailsView.DataSource = myDataSet;
    myDetailsView.DataBind();
    

    MSDN 有更多关于过滤和排序数据集的信息。

    编辑:为了更改到特定页面,可能在页面加载中执行以下操作:

    int selectedPage = -1;
    string id = Request.QueryString["id"];
    if(!string.IsNullOrEmpty(id))
    {
      for(int i = 0; i< myDataSet.Tables[0].Rows.Count; i++)
      {
         DataRow row = myDataSet.Tables[0].Rows[i];
         if(row["id"].ToString().Equals(id))
         {
             selectedPage = i;
             continue;
         }
      }
    }
    
    myDetailsView.DataSource = myDataSet;
    myDetailsView.PageIndex = selectedPage;
    myDetailsView.DataBind();
    

    【讨论】:

    • 嗨,谢谢,这确实回答了我所说的问题,不幸的是,过滤意味着用户无法继续使用 Next/Previous 对记录进行分页。你知道有什么方法可以做到这一点并保持我的数据集完好无损吗?感谢回复
    • 我用找到 pageIndex 的方法更新了答案。我通常不处理数据集,因此如果您查看文档,可能会有更快/更简单的方法:msdn.microsoft.com/en-us/library/… 谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-22
    • 2015-01-02
    相关资源
    最近更新 更多