1

だから私は、selectedValueをあるドロップダウンボックスから特定の行の別のドロップダウンボックスにコピーするメソッドを作成しました。これは、OnCommandイベントの行のボタンから呼び出されます。

    protected void Copy(String From, String To, GridViewRow CurrentRow)
    {
        DropDownList FromList = (DropDownList)CurrentRow.FindControl(From);
        DropDownList ToList = (DropDownList)CurrentRow.FindControl(To);
        ToList.SelectedValue = FromList.SelectedValue;
    }

これをフッター行で使用すると、すべて正常に機能しますが、行の編集中にこれを呼び出そうとすると、デバッグするとデータが表示されますが、ドロップダウンは表示されません。エラーは発生しません。

プロセスをステップインしました。OnCommandイベントが発生した後、Grids RowEditingイベント(すべてのドロップダウンにデータが入力されます)が再度呼び出されます。だから私の推測では、ドロップダウンを再設定することによって行った変更を一掃するだけだと思います。

RowEditingイベントが再起動するのを防ぐ方法はありますか(それが正しいか間違っているかを証明できるようにするためであっても)?このコピーを他の方法で処理する必要がありますか?

4

2 に答える 2

0

ポストバックしないDataBind()でください:

if(!Page.IsPostback)
{
    //databind
}
于 2012-07-06T18:08:13.180 に答える
0

そのため、今朝問題が見つかりました。これは、ボタンでCommandName属性、より具体的には使用していた名前を使用していたためです。

CommandNameは値を渡すための単なる空の場所だと思いましたが、「編集」などの特定の名前を使用すると、ボタンが関連付けられているグリッドのRowEditingイベントが実際に開始されます。

これがこのように機能するとは思いませんでしたが(グリッドではなくボタンに関連付けられていることを考えると)、コマンド名を変更するとすぐに問題なく機能しました。私はそれを元に戻しました、そしてそれは再び壊れました。

于 2012-07-09T12:44:02.677 に答える