2009-07-25 11 views
1

我正在使用一個AccessDataSource控件綁定到DetailsView控件。當select返回沒有行(DetailsView消失,但仍然設置爲可見)時,我想通過禁用按鈕來禁用一些進一步的功能。設置按鈕禁用AccessDataSource沒有行時

在後面的C#代碼,我知道我將需要:

ButtonMyButton.enabled = false; 

不過,我不確定的充分利用的AccessDataSource或DetailsView控件的信息,將讓我知道什麼時候設置的一種方式值。

我已經看到,提出的一個類似的項目例如一些其他文章:

 DataView dv = (DataView)SqlDataSource1.Select(DataSourceSelectArguments.Empty); 
     int reorderedProducts = (int)dv.Table.Rows[0][0] 

對於我來說,數據視圖是錯誤的,因爲沒有合適的命名空間,儘管有:

using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 

如何禁用按鈕?

(雖然這是一個真正的新手問題,這是不是學校的功課,因爲這似乎是這麼多簡單的問題第一條評論。)

回答

2

SqlDataSourceAccessDataSource繼承。因此,它提供了一個名爲Selected的事件,這是SELECT操作完成後引發的事件。此事件應具有SqlDataSourceEventArgs類型的EventArgs參數)。

此EventArgs參數有一個名爲AffectedRows的屬性,它將告訴您檢索的行數。如果它爲0,則可以設置Button的啓用屬性。

private void OnSelectedHandler(Object source, SqlDataSourceStatusEventArgs e) 
{ 
    if (e.AffectedRows == 0) 
    //Disable the button. 
} 

根據記錄,該DataView類駐留在System.Data命名空間。此外,在AccessDataSource上調用Select()將意味着您正在運行兩條select語句,一條用於檢索記錄(如果有),另一條僅用於計算檢索記錄的數量。

+0

這對我來說非常合適。感謝您花時間解釋。我確實必須將「private」更改爲「protected」才能在我的aspx.cs頁面上工作。 – Degan 2009-07-25 13:08:22