2013-04-07 30 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

相關問題