为什么我的ListBox的SelectedIndexChanged事件不响应?autopostblack也设为true 啦,
另外我讲讲我的程序实,listbox绑定的是搜索的结果,然后点里面的项,触发事件
 protected void ButtonSearch_Click(object sender, EventArgs e)
    {
        try
        {
            string WorkID = "";
            string UserName = "";
            WorkID = TextBox1.Text;
                Member myMember = new Member();
            UserName= myMember.GetCNameByWorkID(WorkID);
            if (UserName != null)
            {
                DataTable tb = new DataTable();
                tb.Columns.Add(new DataColumn("name", typeof(string)));
                tb.Columns.Add(new DataColumn("id", typeof(string)));                DataRow dr = tb.NewRow();
                dr["name"] = UserName;
                dr["id"] = WorkID;
                tb.Rows.Add(dr);                ListBox1.DataSource = tb;
                ListBox1.DataTextField = "name";
                ListBox1.DataValueField = "id";                ListBox1.DataBind();
                        }
            
        }
        catch
        {        }
    } protected void ListBox1_SelectedIndexChanged(object sender, EventArgs e)
    {        if (ListBox1.SelectedValue != null)
        {
            Label1.Text = "ss";        }
           }

解决方案 »

  1.   

    没有把绑定的代码放在if(!IsPostBack)里,每次postback后都会先执行page_Load重新绑定了,就无法得到选中项 
     
      

  2.   

    楼上说的是一种情况,还有是否你的ListBox外套没套form,在asp.net里只能有一个form,前几天做和项目,美工给切图时放了好多form结果提交是没反映的!所以看看是那种情况呢
      

  3.   


    可是我的绑定是发生在search事件里的呀,难道要在pastback里再绑定一次?我之前好像试过,好像不行,我再试试
      

  4.   

    renjunfeng的我又试过了,还是不行啊
    wuzhengqing1:你的方法还没试过呢,不过值得一试,死马当活马医了(⊙_⊙)
      

  5.   

    if(!IsPostBack)在哪?完整代码上来看看,我之前也遇到过一次这样的问题,就是if(!IsPostBack)这里有问题,不知道楼主是不是和我问题一样!
      

  6.   

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Data;
    using System.Data.SqlClient;
    public partial class UserM : System.Web.UI.Page
    {
        string WorkID = "";
        string UserName = "";
             
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                
                ListBox1.DataBind();
               
            }
           
        }
        protected void ButtonSearch_Click(object sender, EventArgs e)
        {
            try
            {
                //string WorkID = "";
                //string UserName = "";
                WorkID = TextBox1.Text;
                Member myMember = new Member();
                UserName = myMember.GetCNameByWorkID(WorkID);
                if (UserName != null)
                {
                    DataTable tb = new DataTable();
                    tb.Columns.Add(new DataColumn("name", typeof(string)));
                    tb.Columns.Add(new DataColumn("id", typeof(string)));                DataRow dr = tb.NewRow();
                    dr["name"] = UserName;
                    dr["id"] = WorkID;
                    tb.Rows.Add(dr);                ListBox1.DataSource = tb;
                    ListBox1.DataTextField = "name";
                    ListBox1.DataValueField = "id";                ListBox1.DataBind();
                }
                
            }
            catch
            {        }
        }
     protected void ListBox1_SelectedIndexChanged(object sender, EventArgs e)
        {        (new AlertMessage()).showMsg(Page, "aaaaaa");
            if (ListBox1.SelectedValue != null)
            {
                Label1.Text = "ss";        }
               }
      

  7.   

    加断点 看看 跑了没 在pageload 那 也加个 断点
      

  8.   

    在pageload 那加断点能跑到,但只是在刷新时,而且绑定也没值的,不知道怎么弄
      

  9.   


    wuzhengqing1:太謝謝你啦!我試了你的方法,现在ok啦,不好意現在才回,开始我们公司被限电,公司更换发电系统耽误了会,再加上本来都不报希望的,现在好了,谢谢!
      

  10.   


    <asp:ListBox ID="ListBox1" runat="server" Height="200px" Width="200px" 
                            AutoPostBack="True" 
                    onselectedindexchanged="ListBox1_SelectedIndexChanged"></asp:ListBox>AutoPostBack="Ture"很重要,记得设置为True