带有ObjectDataSource的GridView在空数据上显示页脚

时间:2013-04-07 09:40:03

标签: asp.net gridview objectdatasource

GridView中没有ShowFooterWhenEmpty属性;(

当我没有使用ObjectDataSource进行数据绑定时,它就像:

一样简单
...
    SqlDataAdapter adapter = new SqlDataAdapter(cmd);
    DataTable data = new DataTable();
    conn.Open();
    adapter.Fill(data);
    conn.Close();

    if (data.Rows.Count > 0)
    {
        grid.DataSource = data;
        grid.DataBind();
    }
    else
    {
        data.Rows.Add(data.NewRow());
        grid.DataSource = data;
        grid.DataBind();

        int TotalColumns = grid.Rows[0].Cells.Count;
        grid.Rows[0].Cells.Clear();
        grid.Rows[0].Cells.Add(new TableCell());
        grid.Rows[0].Cells[0].ColumnSpan = TotalColumns;
        grid.Rows[0].Cells[0].Text = "No Records Found";
    }
...

Page_Load() if (!IsPostBack) {...}

调用

现在ObjectDataSource代表自动绑定和分页。

我应该如何将“页脚”渲染到“插入”按钮所在位置?

尝试了OnSelected ObjectDataSource事件,但我不知道如何在那里添加一行。

protected void ODS_Selected(object sender, ObjectDataSourceStatusEventArgs e)
{
    DataSet ds = e.ReturnValue as DataSet;
    // Add empty row here or 'No Records Found' string to force Footer show
}

请帮助!

1 个答案:

答案 0 :(得分:1)

正如您所知,当GridView为空(无行)时,页脚不会显示。解决方法是确保在没有真实数据时从ObjectDataSource返回虚拟行。

我建议检查GridView DataBound事件中的行数,如果没有,则修改ObjectDataSource的SelectMethod以返回虚拟数据的虚拟行,然后重新绑定gridview。虚拟数据的示例可以是:

ID : null
Name : 'No data, please add using form below' ...etc...
Description : null
...
etc
...

GridView将在重新绑定后显示页脚。