0

我想在gridview 中找到控件(超链接)。根据控件的值,我想启用或禁用超链接。我试过这样。但我总是变得空虚。

protected void gridResult_RowDataBound(object sender, GridViewRowEventArgs e) { 
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        HyperLink  status = e.Row.FindControl("id") as HyperLink;
        if ( status != null && status.Text == "AAAA" ) {
            status.Enabled = false; 
        }
    }
}

请帮忙。

4

2 回答 2

2

您的“id”值非常可疑。我的钱是因为您提供了错误的控件名称:FindControl("id!!!!!!!").

我希望看到类似的东西:

HyperLink  status = e.Row.FindControl("hlStatus") as HyperLink;

如果您确实提供了正确的控件名称 (yuck),那么可能是您的超链接控件嵌套得太深,在这种情况下,您需要“爬取”您的控件层次结构来寻找它。

于 2012-06-22T21:37:49.203 回答
0

@dlev 是绝对正确的,控件通常是嵌套的,因此您需要创建自己的各种函数来查找您要查找的内容,您可以将此函数传递给您的控件集合(e.Row.Controls())和您的 id

    private HyperLink FindControl(ControlCollection page, string myId)
    {
        foreach (Control c in page)
        {
            if ((HyperLink)c.ID == myId)
            {
                return (HyperLink)c;
            }
            if (c.HasControls())
            {
                FindControl(c.Controls, myId);
            }
        }
        return null; //may need to exclude this line
    }
于 2012-06-22T22:21:04.850 回答