如何在GridView asp.net中显示“找不到记录”列?

时间:2011-04-27 06:07:38

标签: .net asp.net custom-controls

当我将数据源绑定到GridView时,如果它在我的数据源中没有记录,则它不会显示任何内容。

如果我在GridView中将数据设置为EmptyDataText属性,它将只显示该文本。

,但我想显示我的数据源列,第一行必须在我的GridView中显示“找不到记录”。我该怎么办?

2 个答案:

答案 0 :(得分:2)

当数据表为空时,创建一个新行,然后在将columspan设置为单元格数后绑定。

        DataTable dtTable = GetData();

        if (dtTable.Rows.Count > 0)
        {
            gvDetails.DataSource = dtTable;
            gvDetails.DataBind();
        }
        else
        {
            dtTable.Rows.Add(dtTable.NewRow());
            gvDetails.DataSource = dtTable;
            gvDetails.DataBind();
            int TotalColumns = gvDetails.Rows[0].Cells.Count;
            gvDetails.Rows[0].Cells.Clear();
            gvDetails.Rows[0].Cells.Add(new TableCell());
            gvDetails.Rows[0].Cells[0].ColumnSpan = TotalColumns;
            gvDetails.Rows[0].Cells[0].Text = "No Record Found";
        }

答案 1 :(得分:0)

你可以创建一个扩展方法,看看是否有记录,然后添加一行,说“找不到记录”。比如:

您的grid.ValidateRecords();

或者您可以在数据源级别添加扩展方法。比如:

public static class Extensions
{
    public static DataSet HasData(this DataSet ds)
    {
        if (ds == null || ds.Tables.Count < 1 || ds.Tables[0].Rows.Count < 1)//add more validation, if dataset is not null?
        {
            DataTable dt = new DataTable("Table1");
            dt.Columns.Add("Col1");
            DataRow dr = dt.NewRow();
            dr["Col1"] = "No records found";
            dt.Rows.Add(dr);
            ds.Tables.Add(dt);
        }
        return ds;
    }

}

<强>用法:

gridView1.DataSource = myDataSet.HasData();

<强>输出: enter image description here