2

我有一个从数据库填充的网格视图。

我需要使特定列中的每个单元格在单击时链接到第二页并将单元格的文本值作为查询字符串传递(即链接到http://mysite.com/page.aspx ?CellText= '废话废话')。我知道听起来很简单,但我就是想不通!

这是我的页面目前的样子:

<asp:GridView id="gdvTargets" 
          runat="server" 
          AutoGenerateEditButton="true" 
          OnRowEditing="gdvTargets_RowEdit"
          OnRowUpdating="gdvTargets_RowUpdating" 
          OnRowUpdated="gdvTargets_RowUpdated" 
          OnRowCancelingEdit="gdvTargets_RowCancelingEdit"

          cssClass="grid"
          >
<HeaderStyle CssClass="GridHeader"></HeaderStyle>

还有我背后的c#代码:

 protected void Page_Load(object sender, EventArgs e)
    {
year = Request.QueryString["YearSelector"];
targetType = Request.QueryString["TargetType"];

      gdvTargets.DataSource = this.Ets.Api.Util.Db.GetDataTable("EXEC sp_getTargets " + year + ", " + targetType).Return;
      gdvTargets.DataBind();

    }

这会产生一个看起来像这样的表:

ID        System        Target 1       Target 2       Target3       Target 4
0         ALL           10             20             15             10
2         Machine1      4              7              7              7
5         Xfgb 45       6              13             8              3

我希望系统列可以单击并链接到新页面,但要使用系统名称。希望这是有道理的!感谢您的帮助:D

4

3 回答 3

4

您可以执行以下操作:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
            e.Row.Cells[0].Text = "<a href=''>" + e.Row.Cells[0].Text + "</a>";
}

用您的列索引替换 0

于 2012-10-02T14:25:05.223 回答
1

使用OnRowCommand事件。在您的标记中,使用 a 设置TemplateFielda LinkButton,并将链接按钮的 and 设置CommandNameCommandArguments必要的信息。即,您可以命名CommandName“链接”(或任何您想要的名称)和CommandArgument表格行的 id,或页面的 url 等。

当行命令事件被触发时,检查它是什么命令并在其中做你想做的事情。

public void gridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
    if(e.CommandName == "Link")
    {
        int key = int.Parse(e.CommandArgument.ToString());
        Response.Redirect(string.Format(
            "http://mySite/index.aspx?id={0}", key));
    }
}
于 2012-10-02T14:17:33.250 回答
0

添加HyperLinkField到您的Gridview并设置以下属性:

<asp:HyperLinkField DataNavigateUrlFields="System" 
                    DataNavigateUrlFormatString="page.aspx?CellText={0}" 
                    DataTextField="System" />

DataTextField:要在列中显示的文本
DataNavigateUrlFormatString:使用 0 索引沿查询字符串导航的 URL
DataNavigateUrlFields:要传入查询字符串的字段。如果您想传递超过 1 个字段,请用逗号分隔。

于 2012-10-02T14:30:17.667 回答