2014-10-04 48 views
0

如何在數據綁定之前對此上下文中的行進行計數?對數據源/網格中的行進行計數

這是我試過的,但即使有行也返回0。

protected void OnRowDataBoundZeroLevel(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     string code = zeroLevelGrid.DataKeys[e.Row.RowIndex].Value.ToString(); 
     GridView firstLevelGrid = e.Row.FindControl("firstLevelGrid") as GridView; 
     firstLevelGrid.DataSource = GetData(string.Format("IF (EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = N'{0}')) SELECT * from [{0}]", code)); 

     var isData = firstLevelGrid.Rows.Count; 
     if (isData>0) 
     { 
      firstLevelGrid.DataBind(); 
     } 
    } 
} 
+1

實際綁定在'DataBind'調用中起作用,所以在databind之前'Rows.Count'總是空的。如果'GetData'返回正確的結構,爲什麼不檢查它?或者它返回'IQueryable'? – 2014-10-04 09:05:33

+0

這是一個好主意。謝謝 – FeliceM 2014-10-04 09:08:33

回答

0

將我的評論轉換爲答案。

實際綁定在DataBind調用中起作用,所以在數據綁定Rows.Count之前總是空的。如果GetData返回正確的IEnumerable結構,那麼您可以檢查它的行數。

+0

嗯,通過'context'你是指Entity Framework上下文嗎? – 2014-10-04 09:26:01

+0

那麼,我不會在乎'FirstLevelGrid'中的行數,而只是在沒有檢查的情況下執行'DataBind',因爲如果GetData中沒有任何記錄,那麼'firstLevelGrid'將不會顯示任何行,所以它會無論如何都是空的。 – 2014-10-04 09:31:51

+0

我需要數據計數,因爲我需要使用它來設置展開按鈕的可見性。如果現在有數據,我會將其可見性設置爲false,所以我不需要點擊每個加號來查看是否有內容。 – FeliceM 2014-10-04 09:33:48

相關問題