7

ObjectDataSoure をデータ ソースとして使用している GridView があります。ObjectDataSource は、TextBox および DropDownList からパラメーターを取得してから、ストアド プロシージャに渡します。TextBox や DropDownList の値を指定/変更することで、GridView を強制的に更新するために使用できる Search というボタンもあります。ただし、値を変更すると、[検索] ボタンをクリックする必要がないことに気付きました。GridView をクリックするだけで、データ バインドが発生します。

ObjectDataSource を使用している間にこのアクションを防止する方法はありますか?

4

3 に答える 3

6

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

于 2012-08-09T04:21:29.127 に答える
3

問題は、ObjectDataSource に使用されるパラメーターが変更されるたびに、ODS が「DataBind」を実行することです。

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

別の質問のために作成したコードサンプルを次に示します: Q11874496WebApp.7z

于 2012-08-09T04:30:32.077 に答える
1

私の場合、コードビハインドでプライベートブールフィールドを使用し、datasourceName_Selecting イベントでその値を尊重しました。

たとえば、次のように宣言しました。

private bool IsInSearchingMode = false; 

検索モードでのみ true に設定します。

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

Selecting イベントの値を確認します。

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

// e.result = select code 
}

欠点は、btnSearch_Click が原因ではない新しい page_load がプライベート変数の値をリセットすることです。永続的にしたい場合は、非表示フィールドを提案どおりに使用するか、viewstate に保存する必要があります。

于 2014-02-21T12:50:55.287 に答える