1

DetailsView コントロールにバインドされた AccessDataSource コントロールを使用しています。選択が行を返さない場合 (DetailsView は消えますが、表示されたままになっています)、ボタンを無効にして、さらに機能を無効にしたいと思います。

C# コード ビハインドでは、次のものが必要になることがわかっています。

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;

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

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

4

1 に答える 1

2

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

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

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

記録のために、DataViewクラスはSystem.Data名前空間に存在します。さらにSelect()、AccessDataSource の呼び出しは、2 つの select ステートメントを実行していることを意味します。1 つはレコード (存在する場合) を取得するためのもので、もう 1 つは単に取得したレコードの数をカウントするためのものです。

于 2009-07-25T12:27:27.097 に答える