2012-08-09 8 views
7

私はObjectDataSoureをデータソースとして使用しているGridViewを持っています。 ObjectDataSourceは、TextBoxおよびDropDownListからパラメータを取り込み、ストアドプロシージャに渡されます。また、Searchと呼ばれるボタンがあり、TextBoxおよび/またはDropDownListの値を提供/変更することによって、GridViewを強制的にリフレッシュするために使用できます。しかし、値を変更した場合、[検索]ボタンをクリックする必要はありません。単にGridViewをクリックすると、データがバインドされます。ObjectDataSourceの自動バインドを停止することはできますか?

ObjectDataSourceを使用している間にこの操作を防止する方法はありますか?

+0

あなたのコードを表示してください。自分のコントロールの1つで、自動ポストバックがあると思います。 – SMK

+0

@ ShoaibMuhammadKhan ObjectDataSourceコントロールまたはGridViewコントロールにAutoPostbackプロパティがありません。 TextBoxとDropDownListにはAutoPostbackがfalseとして設定されています。 –

+0

可能な重複: http://stackoverflow.com/questions/831208/databind-and-postback http://stackoverflow.com/questions/1262220/is-this-the-only-way-we-can-force -objectdatasource- – SMK

答えて

6

GridViewにDataSourceIDを割り当てると、グリッドは自動的にObjectDataSourceにバインドされます。 GridViewでそのプロパティを省略し、検索ボタンのクリックイベントが発生するまで待ちます。

+0

へ。ただし、gridviewをクリックすると自動的にページポストバックが行われるのはどうですか? – SMK

+0

@ derek-hunziker GridViewのDataSourceIDプロパティをaspxから削除し、コードビハインドから設定することを意味しますか? –

+0

これは正しいです、aspxページからそれを削除し、コードビハインドで割り当てるには、クリックイベントまで待ってください。 GridViewの定義とDataSourceの表示に役立ちます。いくつかのコードを投稿できますか? –

3

ObjectDataSourceに使用されるパラメータが変更されるたびに、ODSは "DataBind"を実行するという問題があります。

2つのHiddenFieldを使用して値を保持できます。 ObjectDataSourceは、HiddenFieldsの値を変更するときにのみ、 "DataBind"を行います。したがって、TextBoxとDropDownListの値を変更することができます。また、 "DataBind"が必要な場合は、値をHiddenFieldsにコピーするだけで済みます。ここで

は、私は別のquestionのために作られたコードサンプルです:私の場合はQ11874496WebApp.7z

+1

あなたの提案に感謝@Hailton。私はすでにかなりの部分を使っているので、隠されたフィールドを使うのはやや気になりません。しかし悪い場合は、おそらくこれを使用して、後で誰かが、違いがどれくらい隠れているフィールドが増えていくかを議論することができます。 –

1

私はちょうど分離コードでプライベートブールフィールドを使用してdatasourceName_Selectingイベントにその価値観を尊重します。

は、たとえば、私は次のように宣言した:

private bool IsInSearchingMode = false; 

は検索モードで真のそれを設定します。その後、

protected void btnSearch_Click(object sender, EventArgs e) 
    { 
     this.IsInSearchingMode = true; 
     this.gridData.DataBind(); 
    } 

とイベントを選択する上で値を確認します

 protected void myLinqDataSource_Selecting(object sender, LinqDataSourceSelectEventArgs e) 
     { 
      e.Result = new List<BranchDataClass>(); 
      if (!this.IsInSearchingMode) 
       return; 

// e.result = select code 
} 

A欠点は、btnSearch_Clickによって引き起こされない新しいpage_loadがプライベート変数の値をリセットすることです。永続化したい場合は、提案されているように隠しフィールドを使用するか、viewstateに保存する必要があります。

関連する問題