【问题标题】:ASP.Net DatagridView Selection Links To PageASP.Net DatagridView 选择链接到页面
【发布时间】:2025-12-11 06:20:02
【问题描述】:

我的数据网格绑定到一个 Sql-Server 数据库。数据网格显示每个房间的信息。我在 asp.net 的末尾添加了一个额外的列,其中显示详细信息。用户单击所需房间旁边的详细信息,它应该打开该房间的新网页。但是可能存在一个问题,当用户寻找他们进行搜索的房间时,我怎样才能使每次每个详细信息链接都链接到某个房间。

我现在想我需要在那个 Sql 数据库房间表中添加一个新列来保存一个链接?有没有人可以解决这个问题。

【问题讨论】:

    标签: c# asp.net database sql-server-2012


    【解决方案1】:

    你只需要给你的gridview添加一个超链接字段

    在 DataNavigateUrlFormatString 属性中,您将模板地址写入详细信息页面 例如“Details.aspx?id={0}”,在 DataNavigateUrlFields 中,您将写入包含行 ID 的 DB 列的名称。 ID 字段的内容将自动替换 DataNavigateUrlFormatString 的 {0} 部分

    来自 MSDN 的示例:

    <columns>
    
      <asp:boundfield datafield="OrderID" 
        headertext="OrderID"/>
      <asp:boundfield datafield="CustomerID" 
        headertext="Customer ID"/>
      <asp:boundfield datafield="OrderDate" 
        headertext="Order Date"
        dataformatstring="{0:d}" />
      <asp:hyperlinkfield text="Details..."
        navigateurl="~\details.aspx"            
        headertext="Order Details"
        target="_blank" />
    
    </columns>
    

    【讨论】:

    • 对不起,我是 ASP.net 的新手,我有点困惑。所以我需要创建一个名为 Details 的新页面,而不是从 101 到 110 的多个页面。我如何使这个详细页面成为模板? :/ 因为详细信息页面不会每次都保存完全相同的信息,所以我不需要多个不同的 aspx 页面吗?有没有这方面的教程我可以看/看
    • 再次抱歉,我刚刚测试了这个,我看看它现在在做什么!
    • 只有最后一件事,所以我现在有 RoomDetails.aspx?id=101,RoomDetails.aspx?id=102。我如何编辑这些页面中的每一个,因为在我的面板中我只有 Roomdetails.aspx。
    • 我尝试在 roomdetails.aspx 中添加一个标题,我将其设置为 101,当我单击每个详细信息时,它们都显示房间 101 标题。我需要每个页面都是独一无二的。
    • @user1638362 ,您可以从查询字符串中获取id,例如:string strroomId = Request.QueryString["id"].ToString(); 基于此strroomId 从数据库中获取数据并显示。
    【解决方案2】:

    aspx 页面:

    <asp:Label ID="lblRoomName" runat="server"></asp:Label>
    

    后面的代码:

    string strRoomId = Request.QueryString["Id"].ToString();
    SqlConnection sqlCon = new SqlConnection(ConfigurationManager.ConnectionStrings["dbconstr"].ConnectionString);
    SqlCommand sqlcommand = new SqlCommand("Select * from RoomDetails where RoomId = @RoomId", sqlCon);
    sqlcommand.Parameters.AddWithValue("@RoomId", strRoomId);
    SqlDataAdapter da = new SqlDataAdapter(sqlcommand);
    DataSet ds = new DataSet();
    da.Fill(ds);
    GridView1.DataSource = ds;
    GridView1.DataBind();
    

    【讨论】:

    • 所以我知道如何使用文本框/标签来做到这一点。但我该怎么做才能显示那个房间的datagridview?当它加载 room101 详细信息页面时。
    • 我试过这个 GridView1.DataSource = dr; GridView1.DataBind();但似乎什么都没有显示。
    • 如果你想绑定数据到GridView使用SqlDataAdapter获取数据到DataSet,那么你可以使用GridView1.DataSource = ds;
    • 我如何用博士信息填充数据适配器。通常我会这样做 daCustomer.SelectCommand = new SqlCommand("SELECT * FROM dbo.Customers", CS); dsCustomer.Clear(); daCustomer.Fill(dsCustomer);
    • 但由于这个原因,我希望数据适配器填充与以前相同的信息。所以它会显示我们点击详细信息的那一行数据。