我想在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;
}
}
}
请帮忙。
答案 0 :(得分:2)
您的“id”值非常可疑。我的钱是因为您提供了错误的控制名称:FindControl("id!!!!!!!")
。
我希望看到类似的东西:
HyperLink status = e.Row.FindControl("hlStatus") as HyperLink;
如果您确实提供了正确的控件名称(yuck),那么可能是您的超链接控件嵌套太深,在这种情况下,您需要“抓取”您的控件层次结构以查找它。
答案 1 :(得分: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
}