2009-08-10 7 views
3

私は、次のマークアップがありますASP:ListBox - ポストバック時に選択項目がありませんか?

<tr> 
    <td valign="top" align="left"> 
     <asp:Label ID="Label1" runat="server" Text="Available Roles" /> 
     <br /> 
     <asp:ListBox ID="availableRolesListBox" runat="server" SelectionMode="Multiple" Width="100px" Rows="10" AutoPostBack="false" /> 
    </td> 
    <td valign="top" align="center"> 
     &nbsp; 
     <br /> 
     <asp:Button ID="addToRole" runat="server" Text="--->" OnClick="addToRole_Click" /> 
     <br /> 
     <asp:Button ID="removeFromRole" runat="server" Text="<---" OnClick="removeFromRole_Click" /> 
    </td> 
    <td valign="top" align="left"> 
     <asp:Label ID="Label2" runat="server" Text="User In Roles" /> 
     <br /> 
     <asp:ListBox ID="userInRolesListBox" runat="server" SelectionMode="Multiple" Width="100px" Rows="10" AutoPostBack="false" /> 
    </td> 
</tr> 

そして、コードビハインドで次

protected void addToRole_Click(object sender, EventArgs e) 
{ 
    // Add user to the selected role... 
    foreach (ListItem myItem in availableRolesListBox.Items) 
    { 
     if (myItem.Selected) 
     { 
      Roles.AddUserToRole(userListBox.SelectedItem.Value, myItem.Text); 
     } 
    } 

    Refresh(); 
} 

私はコードビハインドにステップすると絶対に項目が選択されていないが!私は何を忘れていますか?

答えて

7

if(!IsPostback)ではなく、たびにavailableRolesListBoxを再バインドしていますか?

+0

ああ!あなたは頭の上にそれを持っています。私のRefresh()メソッド(ほとんどのコントロールを再投入)は私の外でした!Page.PostBack。 ありがとうございます! –

+0

気分を悪くしないでください - それは簡単に間違いです! – RichardOD

+0

ああ、あまりにも簡単!ドー! – DilbertDave

1

いくつか確認できます。

各ポストバックの後にリストボックスを再読み込みしないようにしてください。また、親コンテナにViewStateEnabled="false"がないことを確認することもできます。

これ以外のコードはOKであるはずです。それ以上のデバッグを行うには、より多くのコードや情報が必要です。

関連する問題