我们已经创建了带有 gridview 和数据库数据绑定的网页:
现在我想添加一个超链接到number列,这样我就可以重定向到其他网站。下面是 gridview 的 html 代码:
<Columns>
<asp:BoundField DataField="type"
HeaderText="Type"
ReadOnly="true"
SortExpression="type" />
<asp:TemplateField HeaderText="Number" SortExpression="number">
<ItemTemplate>
<asp:TextBox ID="txtgrdNumber" runat="server" ReadOnly="true"
Font-Names="Arial" Font-Size="10pt" Height="15px" Width="100%" BackColor="Transparent" BorderStyle="None" Text='<%# Bind("number") %>'></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
</Columns>
我浏览了一些材料但没有找到解决方案,有人可以帮忙吗?
好吧,你不说,展示,建议 URL 应该是什么样子。
在您的示例数据中,您有:
45
WORD123
那么,上面的 2 个值“url”应该是什么样的?
也许:
www.somewebsite/Products?id=45
所以,如果没有这些信息和那个 URL 应该是什么样子,那么我们真的是在玩猜谜游戏。
也许数据中还有另一列提供包含您想要的 URL 的 gv? (同样,我们不知道 - 更多的猜谜游戏)。
但是,假设上面是单击该行时您想要的最终结果 URL?
好吧,下一个大问题?
是当前站点的 URL,还是这 100% 是指向其他外部 URL 站点的链接?
如果这是指向当前站点的链接,则使用超链接控件。
如果这是 100% 的外部链接,则使用简单的超链接语法。
所以,说 100% 外部,那么这个:
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
DataKeyNames="ID" CssClass="table table-hover" Width="45%">
<Columns>
<asp:BoundField DataField="Fighter" HeaderText="Fighter" />
<asp:BoundField DataField="Engine" HeaderText="Engine" />
<asp:BoundField DataField="Thrust" HeaderText="Thrust" />
<asp:BoundField DataField="Description" HeaderText="Description" />
<asp:TemplateField HeaderText="Preview">
<ItemTemplate>
<asp:Image ID="Image2" runat="server" Width="150px"
ImageUrl='<%# Eval("ImagePath")%>' />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<a href='<%# "https://www.somewebsite/Products?id=" + Eval("ID") %>'>
View <%# Eval("Fighter") %>
</a>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
所以,经典的超链接具有“链接”,然后是您要显示的文本。
所以有了上面的代码加载,我有这个:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
LoadGrid();
}
void LoadGrid()
{
using (SqlConnection conn = new SqlConnection(Properties.Settings.Default.TEST4))
{
using (SqlCommand cmdSQL = new SqlCommand("SELECT * from Fighters ", conn))
{
conn.Open();
DataTable rstData = new DataTable();
rstData.Load(cmdSQL.ExecuteReader());
GridView1.DataSource = rstData;
GridView1.DataBind();
}
}
}
现在我看到这个:
当我将光标悬停在第二行“链接”上时,浏览器显示要发送到的链接是这样的:
所以,这个答案的“大部分”将取决于 url 是当前网站的内部链接,还是 100% 的外部链接。