2009-07-25 21 views
1

DetailsViewコントロールにバインドされたAccessDataSourceコントロールを使用しています。 selectが行を返さない場合(DetailsViewは消えますが、まだvisibleに設定されています)、ボタンを無効にすることでいくつかの機能を無効にしたいと考えています。後ろのC#コードでAccessDataSourceに行がないときにボタンを無効にする

、私は私が必要になります知っている:

ButtonMyButton.enabled = false; 

しかし、私が設定したときに、私に知らせてしまうAccessDataSourceまたはたDetailsViewから情報を取得する方法の不確実です値。右の名前空間を持っていないとして、持つにもかかわらず、

私にとって
 DataView dv = (DataView)SqlDataSource1.Select(DataSourceSelectArguments.Empty); 
     int reorderedProducts = (int)dv.Table.Rows[0][0] 

、DataViewのは誤りである:

私は同様の項目の例を提案し、いくつかの他の記事を見てきました

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

ボタンを無効にするにはどうすればよいですか?

(これは本当の初心者の質問ですがそれは非常に多くの簡単な質問に最初のコメントのようですから、それは、学校の宿題ではありません。)

答えて

2

SqlDataSourceクラスから継承AccessDataSource。したがって、Selectedというイベントが提供されます。これは、SELECT操作の完了後に発生するイベントです。このイベントには、タイプSqlDataSourceEventArgsのEventArgsパラメーターが必要です。

このEventArgsパラメータには、取得された行の数を示すAffectedRowsというプロパティがあります。値が0の場合、ボタンのenabledプロパティを設定できます。レコードの

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

DataViewクラスがSystem.Data名前空間に存在します。さらに、AccessDataSourceでSelect()を呼び出すと、2つのselectステートメント、つまりレコードを取得するための1つのステートメントと、取得されたレコードの数を数えるためのステートメントがあります。

+0

これは私にとって完璧に機能します。説明していただきありがとうございます。私はaspx.csページで "private"を "protected"に変更して作業する必要がありました。 – Degan

+0

あなたは大歓迎です、それは私の喜びです。 :-) – Cerebrus

関連する問題