如何在网格视图中隐藏行

本文关键字:隐藏 视图 网格 | 更新日期: 2023-09-27 18:31:10

我遇到了我们并检查了不同的网页,但我没有找到我要找的网页。我有一个网格视图,我只想根据单元格中的值隐藏其中一行。

我需要发生的是这样的逻辑:

if (row = "someValue")
{
row.Visible = false;
}

作为记录,我已经尝试过这个但没有运气:

        protected void gv1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        DataRow row = ((DataRowView)e.Row.DataItem).Row;
        string oRoleName = row.Field<string> ("SVal");
        if (oRoleName.Equals ("someValue")) {
            e.Row.Visible = false;
        }
    }

它不是基础天气,该行是第一个或第二个或第三个(如:e.row[1],e.row[2]等)我需要根据行中的值过滤数据库。谁能教我怎么做?

将不胜感激任何帮助。

如何在网格视图中隐藏行

在 RowDataBound 事件中添加与此逻辑类似的内容

if (e.Row.Cells[5].Text == "foo") {
e.Row.Visible = false;
}

编辑:

如果您想检查输入的每一行的值(除非我理解不正确,否则您可能应该扩展一下您的问题。然后你可能想使用事件"CellValueChanged"事先检查单元格是否为空,然后检查您的值并相应地应用下面的逻辑。

        private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
    {
        if (dataGridView1.CurrentCell != null) { 
        if (dataGridView1.CurrentCell.Value.ToString() == "foo")
        {
            // do your stuff here.
        }
        }
    }

您需要做的是获取GridViewRow中列的值。你走在正确的轨道上。在 RowDataBound 中,找到您要查找的列。然后检查其值。

下面是一个示例。使用 FindControl() 获取当前行的指定列中的控件。如果该列中的控件是 Label ,请检查标签的文本以查看它是否是要隐藏的值。如果是这样,请隐藏该行。

protected void gv1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
         Label lbl = e.Row.FindControl("MyLabel");
         if (lbl.Text == "MyValue")
         {
             e.Row.Visible = false;
         }
    }
}