DropDownList.SelectedValueの変更(FormViewの子コントロールとして)が固定されない

StackOverflow https://stackoverflow.com/questions/311250

質問

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

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

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

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

役に立ちましたか?

解決

わかりました。なぜ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();
}

したがって、一般的な経験則では、データバインディングで作業しているときにコントロールに変更を加えるのに問題がある場合は、バインドされた直後にコントロールを変更してみてください。

他のヒント

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top