C#GridViews - 单击时将单列中的单元格链接到另一页面

时间:2012-10-02 14:14:49

标签: c# asp.net gridview hyperlink cell

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

我需要这样做,以便特定列中的每个单元格在单击时链接到第二页并将单元格的文本值作为查询字符串传递(即链接到http://mysite.com/page.aspx?CellText='blah blah胡说')。听起来很简单我知道,但我无法理解它!

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

<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

3 个答案:

答案 0 :(得分:3)

您可以做的是:

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

用列索引替换0

答案 1 :(得分:1)

使用OnRowCommand事件。在您的标记中,设置TemplateField LinkButton,并将链接按钮的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));
    }
}

答案 2 :(得分:0)

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

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

DataTextField:要在列中显示的文字
  DataNavigateUrlFormatString:Url沿着带有0索引的查询字符串进行导航   DataNavigateUrlFields:要在查询字符串中传递的字段。如果你想传递超过1个字段,请用逗号分隔。