复选框根据特定的行值更改Gridview?

时间:2018-05-21 18:23:22

标签: c# asp.net gridview

如果我不以最全面的方式表达这一点,请原谅我,我是.net的新手。

我要做的是:在网格视图外部有一个复选框,一旦选中,将网格视图更新为仅显示具有特定值的行。在这种情况下,"是"或"否"。一旦用户选中该复选框,它将仅显示列值为" YES"的行。

我更希望以不需要重新创建整个网格视图的方式执行此操作,而只显示具有" YES"的行。它们的价值。这就是我到目前为止所做的一切,我不知道我是否走在正确的道路上:

protected void chkbox_Click(object sender, EventArgs e)
{
    AppError curError = null;
    User curUser = null;

    if (chkboxlbl.Checked == true) //if checked then jump into next step
    {
        foreach (GridViewRow row in GridViewAppts.Rows)
        {
          // not sure what to put here yet. 
        }
    }
}

3 个答案:

答案 0 :(得分:2)

通过迭代每一行,你只需要再做一步就可以通过将行可见性设置为false来实现目标:找出哪个列/单元索引" NO"值已设定。

您可以使用以下两种可能的解决方案之一来隐藏包含" NO"某些列/单元格索引中的值:

1)使用foreach循环

foreach (GridViewRow row in GridViewAppts.Rows)
{
    if (row.RowType == DataControlRowType.DataRow)
    {
        // 'n' belongs to column index, starting from leftmost column = 0
        if (row.Cells[n].Text == "NO")
        {
            row.Visible = false;
        }
    }
}

2)使用for循环

for (int i = 0; i < GridViewAppts.Rows.Count; i++)
{
    // 'n' belongs to column index, starting from leftmost column = 0
    if (GridViewAppts.Rows[i].Cells[n].Text == "NO")
    {
        GridViewAppts.Rows[i].Visible = false;
    }
}

答案 1 :(得分:1)

将行的Visible属性设置为False。

if(GridViewRow.Column = "NO")
    GridViewRow.Visible = False;

答案 2 :(得分:0)

你可以尝试:

row.Attributes["style"] = "display:none";

如果这不起作用那么我会重新绑定。你也可以做客户端。