none
求教高手关于listbox1.selectitem的问题? RRS feed

  • 问题

  • 以上代码我看起来好像没错,而且在页面里明明是listbox1已经选中一行或多行了,但一按button3就出现这个错误,提示listbox1.selectitem=null,不明白,求高手指教,谢谢!


    • 已编辑 hzpemu 2012年6月19日 8:28
    2012年6月19日 8:28

答案

全部回复

  • 有没有可能在POSTBACK的时候有其他程序代码把SelectedItem清空了。

    根据错误讯息看来,似乎是发生在没有选到Item时发生,建议你把批注那段保留会比较不易于发生类似的错误。

    if (this.ListBox1.SelectedItem != null)


    以上說明若有錯誤請指教,謝謝。
    http://www.dotblogs.com.tw/terrychuang/

    2012年6月19日 9:28
  • 在 Page_Load 中检查 IsPostback 了吗?

    这是一个常见错误。


    冠军

    2012年6月19日 13:11
  • <asp:DropDownList ID="DropDownList3" runat="server" 
                    DataSourceID="SqlDataSource3" DataTextField="A01BM" DataValueField="A01BM" 
                    AutoPostBack="True" EnableViewState="False" 
                    onselectedindexchanged="DropDownList3_SelectedIndexChanged">
                </asp:DropDownList>
                <br />
                &nbsp;<asp:ListBox ID="ListBox1" runat="server" DataSourceID="SqlDataSource2" 
                    DataTextField="A0101" DataValueField="A0188" Height="220px" 
                    SelectionMode="Multiple" Width="232px" 
                    onselectedindexchanged="ListBox1_SelectedIndexChanged"></asp:ListBox>
                &nbsp;&nbsp;<asp:Button ID="Button3" runat="server" Text=">" onclick="Button3_Click" />
                <asp:ListBox ID="ListBox2" runat="server" Height="224px" 
                    style="margin-top: 0px" Width="252px"></asp:ListBox>

    protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                {
                    //此为数据绑定函数 
                }
            }

    protected void DropDownList3_SelectedIndexChanged(object sender, EventArgs e)
            {
               this.ListBox1.DataBind();  
            }   

    protected void Button3_Click(object sender, EventArgs e)
            {

    //这里我不加if (this.ListBox1.SelectedItem != null)是方便我调试时查看出错的原因而已。//

          ListItem li = new ListItem(this.ListBox1.SelectedItem.Text, this.ListBox1.SelectedItem.Value);

                this.ListBox2.Items.Add(li);


            }

    protected void ListBox1_SelectedIndexChanged(object sender, EventArgs e)
            {   
            }

    我的代码基本上就是以上这些了,我真不明白哪里出错?DropDownList3能控制listbox1的变化,但控button3想把listbox1选中的item加到listbox2就怎么试都找不到原因。

    2012年6月20日 2:58
  • 试着在listbox1里加一个属性AppendDataBoundItems="True"

    以上代码不变,现时好像可以把listbox1的选定的值往listbox2里加了,但新问题又出现了.

    新问题是,每发生DropDownList3_SelectedIndexChanged事件时,this.ListBox1.DataBind();  会把上次的数据加本次的数据一同放进listbox1里。


    • 已编辑 hzpemu 2012年6月20日 5:17
    2012年6月20日 5:17
  • 尝试这样做:

    protected void DropDownList3_SelectedIndexChanged(object sender, EventArgs e)
            {
              ListBox1.DataSource=null;
               ListBox1.DataSource = 重新设置;
               this.ListBox1.DataBind();  
            }   


       QQ我:讨论(Talk)
    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处

    2012年6月20日 8:38