【问题标题】:Passing the ID of the gridview's selected record to another page using querystring使用查询字符串将网格视图的选定记录的 ID 传递到另一个页面
【发布时间】:2012-12-07 13:09:48
【问题描述】:

我有一个启用了选择的网格视图,我还在它下面添加了一个按钮,该按钮应该将用户带到另一个页面,其中一个表单视图等待显示所选记录的完整信息。如何将 ID 作为查询字符串传递并在其他页面的 sqldatasource 中使用?

我的网格视图有

ID
Name

表单视图将显示

ID
Name
Description
Uploader
Audience
Category

【问题讨论】:

    标签: c# asp.net sql query-string


    【解决方案1】:

    您可以使用<asp:HyperLinkField>

    例如:

    <asp:GridView ID="GridView1" runat="server">
       <Columns>
         <asp:HyperLinkField DataNavigateUrlFields="ID" 
             DataNavigateUrlFormatString="/detailsPage.aspx?id={0}"
            DataTextField="ID" HeaderText="ID" />
       </Columns>
    </asp:GridView>
    

    参考:

    HyperLinkField Class:表示在数据绑定控件中显示为超链接的字段。

    【讨论】:

    • 这是一个很好的简单方法。
    • 感谢您的回复,但我想在按钮中添加代码,因为我没有向用户显示调查 ID。
    • @BasharKH 但是您在问题中说过要使用查询字符串在页面之间传递值。
    【解决方案2】:

    您可以从所选行中获取值并在回发时重定向。

    http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.selectedrow.aspx

      Sub CustomersGridView_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs)
        Dim row As GridViewRow = CustomersGridView.SelectedRow
        Response.redirect(String.Format("detailsPage.aspx?id={0}", row.cells(x).text))
      End Sub
    
      void CustomersGridView_SelectedIndexChanged(Object sender, EventArgs e)
      {
         GridViewRow row = CustomersGridView.SelectedRow;
         Response.Redirect(String.Format("detailsPage.aspx?id={0}", row.cells[x].text));
    
      }
    

    其中 x 是保存 ID 的单元格

    在详细信息页面上假设一个存储过程:

    Dim aSource As New SqlDataSource
     aSource.ConnectionString = {your connection string})
     aSource.ProviderName = "System.Data.SqlClient"
     aSource.SelectCommand = {Your stored procedure name}
     aSource.SelectCommandType = SqlDataSourceCommandType.StoredProcedure
     aSource.SelectParameters.Add(New System.Web.UI.WebControls.Parameter("ID", Data.DbType.String, Request.QueryString(0)))
    
     SqlDataSource aSource;
     aSource.ConnectionString = {your connection string});
     aSource.ProviderName = "System.Data.SqlClient";
     aSource.SelectCommand = {Your stored procedure name};
     aSource.SelectCommandType = SqlDataSourceCommandType.StoredProcedure;
     aSource.SelectParameters.Add(New System.Web.UI.WebControls.Parameter("ID", Data.DbType.String, Request.QueryString[0]));
    

    编辑:从看到您对另一个答案的回复:

    我相当确定所选行也应该对您的提交函数可见。

    【讨论】:

    • 对不起,我忘了添加 C# 标签,我刚刚添加了。不过谢谢。
    • 方法一样,只是语法有点不同。
    • 很高兴它对你有用。下次询问时,请尽可能多地添加信息。我在回答时做了一些假设,认为有时会导致可以接受的答案,但仍然很难提供帮助。
    猜你喜欢
    • 1970-01-01
    • 2017-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多