2

さて、InsertItemTemplate にいくつかの子コントロールを持つ FormView があります。それらの 1 つは、DdlAssigned と呼ばれる DropDownList です。次のように Page の OnLoad メソッドで参照します。

protected void Page_Load(object sender, EventArgs e)
{
    ((DropDownList)FrmAdd.FindControl("DdlAssigned")).SelectedValue =
          ((Guid)Membership.GetUser().ProviderUserKey).ToString();
}

基本的に、現在ログインしているユーザーに DropDownList のデフォルト値を設定しているだけです。

とにかく、ページの読み込みが終了しても、SelectedValue の変更はページに反映されません。OnLoad をステップ実行すると、ウォッチ リストに変更が反映されていることがわかりますが、すべてを行っても、ページに何も違いはありません。

4

2 に答える 2

4

私はそれを考え出した。FormLoad だけで機能しない理由はまだ正確にはわかりませんが、FormView の DataBound イベントで変更を実行するとうまくいきます。

protected void FrmAdd_DataBound(object sender, EventArgs e)
{
    // This is the same code as before, but done in the FormView's DataBound event.
    ((DropDownList)FrmAdd.Row.FindControl("DdlAssigned")).SelectedValue =
        ((Guid)Membership.GetUser().ProviderUserKey).ToString();
}

したがって、一般的な経験則として、データバインディングを使用するときにコントロールを変更する際に問題が発生した場合は、バインドされた直後に変更するようにしてください。

于 2008-11-23T06:10:10.603 に答える
0

ドロップダウンリストに問題があり、最初の値に「値を選択してください...」のようなものを作成しましたが、実際に選択可能なアイテムにしたり、ドロップダウンリストに表示したりしませんでした。page_load で ddl をバインドしていましたが、ドロップダウン リストのテキストがデータにバインドされた後に設定されていることを確認する必要があります。データバインドされたセクションに追加することで、同じことを達成しました。

于 2008-11-23T06:15:42.697 に答える