如果之前有人问过这个问题,我很抱歉,但我已经在论坛中搜索了很长一段时间,但未能找到解决我的问题的方法。
我目前正在开发一个网络应用程序,用户可以在其中捐赠瓶子押金。当用户上传瓶子后,它们将显示在下表中: Snippet of the table
数据显示在带有 SqlDataSource 的 GridView 中。代码:
<div class="table-responsive col-8">
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:WeCANConnectionString %>"
SelectCommand="SELECT [creator], [amount], [details],
[imageurl], [pickup], [available_from] FROM [deposit] ORDER BY [id] DESC"></asp:SqlDataSource>
<asp:GridView id="GridView1" class="table table-hover table-striped table-bordered" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource1">
<Columns>
<asp:BoundField DataField="creator" HeaderText="Uploaded By" SortExpression="creator" />
<asp:BoundField DataField="amount" HeaderText="Amount" SortExpression="amount" />
<asp:BoundField DataField="details" HeaderText="Details" SortExpression="details" />
<asp:BoundField DataField="imageurl" HeaderText="Image" SortExpression="imageurl" />
<asp:BoundField DataField="pickup" HeaderText="Location of the bottles" SortExpression="pickup" />
<asp:BoundField DataField="available_from" HeaderText="Available from" SortExpression="available_from" />
</Columns>
</asp:GridView>
我希望能够单击每个单独的帖子并创建动态页面,其中显示数据库中的更多数据。我在某处读到,我可以使用每个帖子的 ID 创建这些页面,但我找不到任何显示其工作原理的内容。
请随意提出以下任何问题。这是我的第一篇文章,所以我不确定我是否已经涵盖了所有内容。
提前非常感谢。
最佳答案
实现此目的的一种方法是在每行中添加一个链接。首先,您需要将“id”添加到数据源中的 SELECT
中,以便在绑定(bind)表时可以访问数据。
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:WeCANConnectionString %>"
SelectCommand="SELECT [id], [creator], [amount], [details], [imageurl],
[pickup], [available_from] FROM [deposit] ORDER BY [id] DESC">
</asp:SqlDataSource>
然后在 GridView 中,创建一个包含超链接的模板列,并让该超链接的 NavigateUrl 使用查询字符串上的 ID 打开一个新页面。如果您不希望 ID 在 URL 中公开,则可能需要以某种方式对其进行混淆,或者在数据库中为每条记录使用 GUID 列。只要你能认出来。您的 NavigateUrl 可以是您想要的任何页面,但在本例中我使用了 DetailPage.aspx。
<asp:GridView id="GridView1" class="table table-hover table-striped table-bordered" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource1">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:HyperLink ID="DetailsLink" runat="server"
NavigateUrl="DetailPage.aspx?id=<%# Eval("id")%>"
Text="Details" Target="_blank">
</asp:HyperLink>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="creator" HeaderText="Uploaded By" SortExpression="creator" />
<asp:BoundField DataField="amount" HeaderText="Amount" SortExpression="amount" />
<asp:BoundField DataField="details" HeaderText="Details" SortExpression="details" />
<asp:BoundField DataField="imageurl" HeaderText="Image" SortExpression="imageurl" />
<asp:BoundField DataField="pickup" HeaderText="Location of the bottles" SortExpression="pickup" />
<asp:BoundField DataField="available_from" HeaderText="Available from" SortExpression="available_from" />
</Columns>
</asp:GridView>
<@# Eval('id')@> 会将每行的 ID 呈现为 URL 中的查询字符串。
关于c# - 有没有办法让asp.net Boundfield成为一个链接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61509610/