Как показать «Запись не найдена» с колонками в GridView asp.net? - PullRequest
0 голосов
/ 27 апреля 2011

Когда я связываю источник данных с GridView, если у него нет записи в моем источнике данных, он ничего не отображает.

Если я установлю данные для свойства EmptyDataText в GridView, он покажет только этот текст.

, но я хочу показать столбец моего источника данных, и в первой строке должно отображаться «Запись не найдена» в моем GridView. Что мне делать?

Ответы [ 2 ]

2 голосов
/ 27 апреля 2011

Когда таблица данных пуста, создайте новую строку и после этого установите привязку 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";
        }
0 голосов
/ 27 апреля 2011

Вы можете создать метод расширения, который будет проверять, нет ли записей, а затем добавить строку, которая скажет: «записи не найдены». Например, как:

ваш 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

...