如何创建/添加到边界域/模板域的超链接?

问题描述 投票:0回答:1

我们已经创建了带有 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>

我浏览了一些材料但没有找到解决方案,有人可以帮忙吗?

c# asp.net gridview aspxgridview
1个回答
0
投票

好吧,你不说,展示,建议 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% 的外部链接。

© www.soinside.com 2019 - 2024. All rights reserved.