【问题标题】:C# GridViews - Make the cells in one column link to another page when clickedC# GridViews - 单击时使一列中的单元格链接到另一页
【发布时间】:2012-10-02 14:14:49
【问题描述】:

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

我需要使特定列中的每个单元格在单击时链接到第二页并将单元格的文本值作为查询字符串传递(即链接到http://mysite.com/page.aspx?CellText='blah 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

【问题讨论】:

    标签: c# asp.net gridview hyperlink cell


    【解决方案1】:

    您可以执行以下操作:

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

    用你的列索引替换 0

    【讨论】:

    • 你是个美男子!这就是我一直在寻找的谢谢。通过一点点调整,它也解决了我遇到的另一个问题:) 谢谢
    【解决方案2】:

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

    【讨论】:

    • 感谢戴夫的快速回复!我忘了提到除了系统列之外的所有单元格都是可编辑的。我只需要使此列中的单元格链接通过。
    【解决方案3】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2016-11-28
      • 1970-01-01
      • 2018-04-29
      • 1970-01-01
      • 1970-01-01
      • 2013-10-29
      • 1970-01-01
      • 1970-01-01
      • 2017-02-18
      相关资源
      最近更新 更多