我的数据网格绑定到Sql Server数据库。数据网格显示每个房间的信息。我在asp.net的末尾添加了一个额外的专栏,上面写着Details。用户单击所需房间旁边的详细信息,应该会打开该房间的新网页。然而,可能会有一个问题,当用户查找房间时,他们会进行搜索,我如何才能做到每次详细信息链接都链接到某个房间。
我现在想,我真的需要在Sql数据库房间表中添加一个新列,也许可以保存一个链接?有人能解决这个问题吗。
您只需要在网格视图中添加一个超链接字段
在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>
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();