为gridview中的每个数据设置不同的超链接

时间:2014-11-22 15:28:44

标签: c# asp.net gridview hyperlink

我尝试从数据库中添加stockNamegridview的超链接。我设法使超链接仅指向单个页面。如何为不同的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" />

2 个答案:

答案 0 :(得分:0)

正如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}使用标准String.Format语法映射到StockName{1}映射到StockID

答案 1 :(得分:0)

你可能想要

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

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