如何在GridView中隐藏行

时间:2016-01-19 15:30:37

标签: c# asp.net gridview

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

我需要发生的事情就像这样的逻辑:

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]等)我需要根据行中的值过滤数据库。任何人都可以教我如何做到这一点?

感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

在RowDataBound事件中添加与此逻辑

一致的内容
if (e.Row.Cells[5].Text == "foo") {
e.Row.Visible = false;
}

编辑:

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

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

答案 1 :(得分:0)

您需要做的是获取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;
         }
    }
}