为网格视图中的每个数据设置不同的超链接

本文关键字:设置 超链接 数据 网格 视图 | 更新日期: 2023-09-27 18:31:27

我正在尝试从数据库添加指向gridview stockName的超链接。我设法使超链接仅指向单个页面。如何为不同的股票名称添加不同的网址超链接?

我要为第一个股票名称添加的 url 是 gentingdisplay.aspx ,第二个是pangkordisplay.aspx,第三个是langkawidisplay.aspx等等。

<asp:GridView ID="GridView2" runat="server" AutoGenerateColumns="False" 
        CellPadding="4" DataSourceID="SqlDataSource2" ForeColor="#333333" 
        GridLines="None">
        <RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
        <Columns>
             <asp:BoundField DataField="StockID" HeaderText="Stock ID" 
                SortExpression="StockID" />
                <asp:HyperLinkField 
  DataNavigateUrlFields="StockName" 
  DataNavigateUrlFormatString="gentingdisplay.aspx?StockID=0" 
  HeaderText="Stock Name" 
  SortExpression="StockName" 
  DataTextField="StockName" />
            <asp:BoundField DataField="StockPrice" HeaderText="Stock Price" 
                SortExpression="StockPrice" />
            <asp:BoundField DataField="UnitAvailable" HeaderText="Unit Available" 
                SortExpression="UnitAvailable" />

为网格视图中的每个数据设置不同的超链接

正如 DataNavigateUrlFields 的文档所述,您可以提供一个逗号分隔的字段列表,以便在 DataNavigateUrlFormatString 中使用。

因此,如果我正确理解您并且您希望StockName构成超链接路径的一部分并在 StockID 查询字符串中传递StockID,您可以在HyperLinkField中使用它:

<asp:HyperLinkField 
  DataNavigateUrlFields="StockName,StockID" 
  DataNavigateUrlFormatString="{0}display.aspx?StockID={1}" 
  HeaderText="Stock Name" 
  SortExpression="StockName" 
  DataTextField="StockName" />

这里{0}映射到StockName{1}映射到StockID,使用标准的String.Format语法。

你可能想要

  <asp:HyperLinkField DataNavigateUrlFields="StockName" 
  DataNavigateUrlFormatString="{0}display.aspx" 
  HeaderText="Link" 
  SortExpression="StockName" 
  DataTextField="StockName" />

但是,我认为使用以这种方式设计的页面组织您的网站可能是不好的做法 - 可能很难维护。