如何在GridView中隐藏行,如果某些列是空的

本文关键字:如果 GridView 隐藏 | 更新日期: 2023-09-27 18:06:22

我有一个GridView,它显示有关作业的一些信息,GridView中的一个选项是选择一个原因。如果没有选择原因,那么我不想在GridView中显示那一行。如何检查Reason列中是否有值,如果为空,如何隐藏该行?

private GridView BuildDebriefGridView()
    {
        GridView gv = new GridView();
        gv.AutoGenerateColumns = false;
        //gv.RowDataBound +=
        gv.Columns.Add(new BoundField { HeaderText = "Job No", DataField = "JobNo" });
        gv.Columns.Add(new BoundField { HeaderText = "Qty Rcvd", DataField = "QtyRcvd" });
        gv.Columns.Add(new BoundField { HeaderText = "Reason", DataField = "Reason" });
        gv.Columns.Add(new BoundField { HeaderText = "Comment", DataField = "Comment" });
        gv.Attributes.Add("style", "width:100%");
        return gv;
    }

如何在GridView中隐藏行,如果某些列是空的

void gv_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            JobPieceSerialNo item = e.Row.DataItem as JobPieceSerialNo;
            if (item != null)
            {
                if (string.IsNullOrEmpty(item.Reason))
                {
                    e.Row.Visible = false;
                }
            }
        }
    }

尝试以下;

private void gvTransportListResults_RowDataBound(Object sender, GridViewRowEventArgs e)
 {
    if (e.Row.Cells["Reason"].Text == "") 
        e.Row.Visible = false;
 }

或者如果是一个复选框

private void gvTransportListResults_RowDataBound(Object sender,   GridViewRowEventArgs e)
 {
    if(((CheckBox)e.Row.FindControl("YourCheckboxID")).Checked == false) 
        e.Row.Visible = false;
 }

使用GridView_RowDataBound事件可以实现这一点。

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        if (e.Row.Cells[ReasonCellNumber].Text == "Reason")
        {
            e.Row.Visible = false;
        }
    }
}
相关文章: