1

这是场景。我有 2 个网格视图。例如 Gridview 1 是这样的

 __________________________________
| select | cell 2 | cell 3         |

然后,当您单击单元格 1 中的选择时,它会填充 Gridview 2。

  _______________________________
 | cell 1 | cell 2 | BUTTON      |

然后,当第二个 gridview 加载时,如果单元格 2 中的值为 true,我将尝试禁用该按钮。

我尝试使用 rowdatabound 事件禁用该按钮。使用以下内容获取单元格文本信息。

在 aspx 页面上

<asp:GridView ID="GridView10" runat="server" AutoGenerateColumns="False" 
                Font-Size="10px" CellPadding="2" 
                DataKeyNames="ID" DataSourceID="SqlDataSource35" Width="100%" 
                BorderColor="#CCCCCC" OnRowCommand="GridView10_RowCommand" 
                onrowdatabound="GridView10_RowDataBound"

在后面的代码中

protected void GridView10_RowDataBound(object sender, GridViewRowEventArgs e)
{
    string cellt = e.Row.Cells[5].Text;

    if (cellt == "True")
    {
        Button btn = (Button)e.Row.Cells[6].Controls[1];
        btn.Enabled = false;
    }
}

通常这很有效。但无论出于何种原因,在这种情况下事件似乎都没有触发。有人对这个问题有任何见解吗?

4

1 回答 1

0

你确定你有正确的 Gridview 单元格吗?您可能使用了错误的单元 ID 在哪里

protected void GridView10_RowDataBound(object sender, GridViewRowEventArgs e)
{
    string cellt = e.Row.Cells[CORRECT CELL?].Text;

     if (cellt == "True")
    {
        Button btn = (Button)e.Row.Cells[CORRECT CELL?].Controls[1];
        btn.Enabled = false;
    }
}

如果这是正确的单元格,您只需更改可见性属性

Buttonname.visible = false

另外,你可以这样做

protected void GridView10_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        string cellt = e.Row.Cells[CORRECT CELL?].Tostring;
         if (cellt != "True") continue;
        {
            Button btn = (Button)e.Row.Cells[CORRECT CELL?].Controls[1];
            buttonname.visible = false;
            break;
        }
    }

记住 gridviews 从单元格 0 开始

因此,如果您将其作为单元格 6 ,请确保您从单元格 0 开始 - 所以单元格 6 可能是单元格 5..

编辑,我注意到您询问单元格是否有特定文本,使用上面显示的 .Tostring。

于 2014-06-09T11:48:08.333 回答