我遇到了我们并检查了不同的网页,但我找不到我要找的那个。我有一个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 :(得分: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;
}
}
}