如何在网格视图中隐藏行
本文关键字:隐藏 视图 网格 | 更新日期: 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;
}
}
}