2016-01-19 66 views
0

我遇到了我们并检查了不同的网页,但我没有找到我正在寻找的那个。我有一个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]等)我需要过滤数据库的行中的值。任何人都可以教我如何做到这一点?

希望有任何帮助。

+0

试试这个实现RowDataBound,检查DataRow类型和你的值;如果匹配e.Row.Visible = false; – techspider

+0

jquery或javascript可以用前端做到,后端gridview事件可以做同样的事情。顺便说一下,我现在没有电脑,请告诉我,如果您在9小时后还没有得到该示例,我会提供示例代码。 –

+0

尽可能多的我需要在c#中独自完成这个工作,而不是在js,json jquery等中。 – OneLazy

回答

1

在RowDataBound事件沿着这个逻辑的线条添加一些

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

编辑:

如果您是在寻找错误地检查每一行的值作为其进入(除非IM的了解,你应该可能会扩展你的问题。) 然后,你可能想要使用事件“CellValueChanged” 检查,以确定该单元格是否为空,然后做检查你的价值,并相应地应用下面的逻辑。

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

它是单元格[5] sir,它不一定是单元格的数量,而是单元格的值,因为我在gridview中查找的行每次都会更改单元格的数值,因为每次都是用户添加行。 – OneLazy

+0

道歉,如果我让你误解。我想说的先生是,单元格数量正在改变,因为有条目被添加,因此,如果说“亚当”目前在网格中,并保存一个条目说“AAM”,如果当前单元格的数字od'亚当'是3,那么如果添加'aam',它将是4。所以细胞的数量并不重要。并记录单元格值不可编辑,因此无法使用“CellValueChanged” – OneLazy

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; 
     } 
    } 
}