- - PR -
ListBoxがPostBack時に空になってしまうことについて
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2007-06-05 17:01
はじめて書き込みさせていただきます。
vs2005を使用してWebアプリの開発をしています。 vbscriptを使用し、ListBoxにitemを追加するのですが、 PostBack時にvbscriptで追加したitemが空になってしまいます。 これを回避するために、ListBoxを継承した新しいmycoListBoxコントロールを過去ログを元に作成したのですが、このコントロール使用してもPostBack時にListのitemが空になってしまいます。 解決方法や、間違いの指摘がありましたら教えて下さい。 --------以下mycoListBoxのソース-- [DefaultProperty("ListBox")] [ToolboxData("<{0}:mycoListBox runat=server></{0}:mycoListBox>")] public class mycoListBox : System.Web.UI.WebControls.ListBox { [Bindable(true)] [Category("Appearance")] [DefaultValue("")] [Localizable(true)] protected override bool LoadPostData(string postDataKey, System.Collections.Specialized.NameValueCollection postCollection) { String value = postCollection.GetValues(postDataKey)[0]; if ((value != null) && (this.Items.FindByValue(value) == null)) { this.Items.Add(value); } return base.LoadPostData(postDataKey, postCollection); } } |
|
投稿日時: 2007-06-05 19:02
>間違い
クライアントで追加されたitemをサーバに通知する仕組みはありません。 従ってサーバ側だけでは解決できません。 >解決方法 追加したitemをサーバに通知する手段を実装する必要があります。 クライアントサイドで追加したitemの情報を隠しフィールドに保存しておき、サーバ側のLoadPostDataで復元するとか。 |
|
投稿日時: 2007-06-05 19:07
ListBox のアイテムはサーバ側に値がポストされないので、クライアントスクリプト側で追加したアイテムをサーバー側で知ることはできません。
何が追加されたかを知るためには hiddent などに隠してポストする必要があります。 _________________ かるあ のメモ と スニペット |
|
投稿日時: 2007-06-05 19:45
かるあさん
todoさん レスありがとうざいます。 ListBoxのitemをpostすることはできない仕様なのですね。 参考になりました。ありがとうございます。 |
1