私はListBoxをコードビハインドに追加しています。私が持っている問題は、ListBoxが選択された項目を見ていないということです。 DropDownListがAutoPostBackをtrueに設定するように、ユーザーがDropDownListから何を選択するかによって、ListBoxに動的に値が設定されます。私はこれがどういうわけか問題を引き起こしていると思います。ListBoxは選択されていないアイテムを取得していません
私のSelectedIndexChanged
メソッドは、DropDownListの項目が選択されるたびに使用され、PopulateListBox
というメソッドを呼び出します。ここでは、これらのメソッドは次のようになります。ここでは、それは価値がある何のため
protected void SelectedIndexChanged(object sender, EventArgs e)
{
string typeStr = type.SelectedItem.Text;
MyType = Api.GetType(typeStr);
PopulateListBox();
}
private void PopulateListBox()
{
listbox.Items.Clear();
foreach (PropertyInfo info in MyType.GetProperties())
listbox.Items.Add(new ListItem(info.Name));
}
のDropDownListとListBoxコントロールされています
<asp:DropDownList runat="server" ID="type" width="281px" OnSelectedIndexChanged="SelectedIndexChanged" AutoPostBack="true" />
<asp:ListBox runat="server" ID="listbox" width="281px" height="200px" selectionmode="Multiple" />
私がやろうとしていますどのようなことは(文字列が選択されている文字列のリストを追加することですitems)をセッション変数として追加することができます。リストがセッションに追加された後、ボタンは新しいページにリダイレクトされます。デバッガでは、文字列のリストは、私がセッションに追加するポイントで空です。
listbox.GetSelectedIndices()
は何も返しません。
更新
私はDropDownListコントロールの変更を行わない場合、私は、選択した項目にアクセスすることができます。 ListBoxは最初はページの読み込み時に読み込まれ、選択すると認識されます。 DropDownListから何かを選択し、ListBoxが再投入された場合、選択は認識されません。
私のPage_Load
メソッドは2つのことしか行いません。それはこのようになりますこれは、私のAPI変数を初期化し、PopulateDropDown
を呼び出します。
private void PopulateDropDown()
{
foreach (Type t in Api.GetAllTypes())
type.Items.Add(new ListItem(t.Name));
string typeStr = type.Items[0].Text;
Type = Api.GetType(typeStr);
PopulateListBox();
}
ただし、リストボックスで選択した項目が表示されない場合は、ドロップダウンリストで選択を変更するときは?または、ポストバックを実行する他のコントロールがありますか? – dzendras
@dzendras:これについては、下のポストを更新しました。 –
いつリストボックスにアクセスしますか? PageLoad?あなたがそれにアクセスする場所がASP.NETページのライフサイクルに従ってOKであるかどうかをチェックします(リクエストコントロールの処理の初期段階ではプロパティが設定されていません)。また、ページライフサイクルの早い段階でリストボックスをクリアしていないかどうか確認してください。 – dzendras