0


0

ドロップダウンに拘束力があります。 初期負荷で動作します。 それ以降のロード(ポストバック)では、ドロップダウンのアイテムは更新されません。

using(DataView dv = dtProductGroup.DefaultView){dv.ApplyDefaultSort = false; dv.Sort = "KVIGroupName ASC";

ddlGroup.ClearSelection(); ddlGroup.Items.Clear();

文字列strAll = Localization.GetResourceValue( "_ strddlStatusLBAll"); ddlGroup.DataValueField = "KVIGroupId"; ddlGroup.DataTextField = "KVIGroupName"; ddlGroup.DataSource = dv; ddlGroup.DataBind();

ListItem項目= new ListItem(strAll、 "0"); ddlGroup.Items.Insert(0、item); }

ポストバックで、データがドロップダウンにバインドされ、アイテムが正常に追加されたことを確認しました。 しかし、ページがレンダリングされるとき、ドロップダウンは新しい値を一切持ちません。

2つの可能性があります。コントロールが新しい値をレンダリングしていないか、値が消去されています。 考えられる問題を探す場所がわからなくなります。

編集

私はその問題を発見した。 ドロップダウンリストはConditional UpdatePanelに埋め込まれました。 単に "UpdatePanel.Update();"を呼び出すだけです。問題を解決しました。

1 Answer


1


ポストバック時にビューステートが再適用されます。あなたはあなたが再び値をロードしようとしていると言いました。 ビューステートにポストバックですべての重みを持たせることをお勧めします。 ページが最初にヒットしたときにのみif(!を追加して値をロードします。 IsPostBack)のように

using(DataView dv = dtProductGroup.DefaultView){if(! IsPostBack){

dv.ApplyDefaultSort = false; dv.Sort = "KVIGroupName ASC";

ddlGroup.ClearSelection(); ddlGroup.Items.Clear();

文字列strAll = Localization.GetResourceValue( "_ strddlStatusLBAll"); ddlGroup.DataValueField = "KVIGroupId"; ddlGroup.DataTextField = "KVIGroupName"; ddlGroup.DataSource = dv; ddlGroup.DataBind();

ListItem項目= new ListItem(strAll、 "0"); ddlGroup.Items.Insert(0、item); }}

*編集:*また、あなたの構文は、dvによって参照されるDataViewオブジェクトがコードブロックが終了するときに破棄されることを保証します。 私の2番目の推測は、これが問題を引き起こす副作用を引き起こすということです。

using(DataView dv = dtProductGroup.DefaultView){

代わりに、使用を省略して、次のように通常の宣言を記述してください(ページがレンダリングされるとき、DataViewは他のすべてのものと一緒に破棄されるので、実際に自分で行う必要はありません)。

DataView dv = dtProductGroup.DefaultView;

詳細については、http://msdn.microsoft.com/ja-jp/library/yh598w02(VS.71).aspx [使用方法およびIDisposable]についてのMSDNのドキュメントを参照してください。