asp.net 如何创建/添加到绑定域/模板域的超链接?

aydmsdu9  于 2023-03-20  发布在  .NET
关注(0)|答案(1)|浏览(146)

我们创建了一个带有网格视图和数据绑定的网页:

现在我想添加一个超链接到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>

我看了一些资料,但没有找到解决办法,有人能帮忙吗?

mzaanser

mzaanser1#

好吧,你不要说,显示,建议网址应该是什么样子。
在示例数据中,您有:

45
 WORD123

那么,上面的两个值“url”应该是什么样子的呢?
也许:

www.somewebsite/Products?id=45

因此,如果没有这些信息和URL应该是什么样子,那么我们真的是在玩一个猜谜游戏。
也许在gv的数据中有另一列包含了你想要的URL(同样,我们也不知道-更多的是猜谜游戏)。
然而,假设上面的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();
        }
    }
}

现在我看到了这个

当我将光标悬停在第2行“链接”上时,浏览器会显示要发送到的链接是:

所以,这个答案的“大部分”将取决于网址是当前网站的内部链接,还是100%的外部链接。

相关问题