【问题标题】:Why can't hyperlinkfield get the data?(asp.net)为什么超链接字段无法获取数据?(asp.net)
【发布时间】:2018-05-26 05:50:38
【问题描述】:

开发中:asp.net 网络表单 (4.5)

    <Columns>
        <asp:DynamicField DataField="student" />
        <%--<asp:HyperLinkField DataTextField="idNum" HeaderText="idNum" DataNavigateUrlFields="idNum"  />--%>
        <asp:BoundField DataField="idNum" HeaderText="idNum" />
    </Columns>

当我使用boundfield时,我可以通过数据绑定来使用数据。

    protected void soGrid2_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        using (Action act = new Action())
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {

                string idNum= e.Row.Cells[2].Text;
            }
        }
    }

如上。但是,如果我像注释代码一样使用 HyperLinkField,数据看起来很好,但我无法从 rowDataBound 获取数据。有人知道这是为什么吗?以及如何使其成为超链接字段?

【问题讨论】:

  • .Text 属性只会直接在单元格中获取文本。如果您想从 HyperLinkField 中获取它,您需要访问单元格内的控件。
  • 这是什么Action 类?为什么要为网格中的每一行(甚至是页眉和页脚)初始化它?
  • @TimSchmelter 哦,我实际上还有另一个动作类的方法。我没有在这里写,因为这不是问题的重点。
  • @mason 哇,这完全有道理

标签: c# asp.net gridview webforms asp.net-4.5


【解决方案1】:

如果我没记错的话,HyperlinkField 在该单元格中放置了一个HyperLink control

protected void soGrid2_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        var idNumLink = (HyperLink) e.Row.Cells[2].Controls[0];
        string idNum= idNumLink.Text;
    }
}

请注意,我使用了e.Row.Cells[2],因为您已经使用了它。但在您的示例中,它是第二列,因此您必须使用 e.Row.Cells[1]

【讨论】:

  • 会试试的。谢谢。
  • 哦,我使用了 e.Row.Cells[2] 因为在 Cells[0] 中有自动创建的编辑和删除按钮。无论如何,它有效!谢谢!!!!
猜你喜欢
  • 1970-01-01
  • 2014-10-03
  • 1970-01-01
  • 2019-02-13
  • 2013-06-14
  • 2020-06-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多