2013-04-07 47 views
3

有一个在GridView中没有ShowFooterWhenEmpty财产;(的GridView有ObjectDataSource控件显示页脚对空数据

当我没有使用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 
} 

请帮忙!

+0

如果您有空数据模板,为什么您会坚持在页脚中输入信息? – 2013-04-07 10:41:22

+0

有相关控件的插入按钮 – 84RR1573R 2013-04-07 10:59:38

+0

您可以将它们复制到空数据模板中。 – 2013-04-07 11:38:23

回答

1

正如您已经知道,当GridView为空(无行)时,不显示页脚。解决方法是确保在没有实际数据存在时从ObjectDataSource返回一个虚拟行。

我会建议检查GridView DataBound事件中的行数(如果没有),然后修改ObjectDataSource的SelectMethod以返回虚拟行数据,然后重新绑定GridView。虚拟数据的一个例子可能是:

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

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

+0

似乎这是唯一的快速n-dirty SQL级解决方案。与GridView OnPreRender事件一起工作以隐藏空值。 – 84RR1573R 2013-04-08 05:05:36