代码看看
有没有处理IsPostBack?

解决方案 »

  1.   

    呵呵呵,用了这么久也没有发现你说的这个bug。
    出了问题,不要先往死东西上面推托。查查代码先。
      

  2.   

    我的页面上有两个下拉框,第一个是ClassList,第二个是CatList.
    BindClassData就是生成一个DataSet绑定到ClassList上
    private void Page_Load(object sender, System.EventArgs e)
    {
        if(!IsPostBack)
        {
    BindClassData();
        }
    }当ClassList的Index改变时,根据ClassList的选中的Value再生成一个DataSet,绑定到CatList上。
    private void ClassList_SelectedIndexChanged(object sender, System.EventArgs e)
    {
        if(ClassList.SelectedIndex != 0)
    BindCategory();
    }private void BindCategory()
    {
        CategoryWebData webCatData = ...;    DataRow tempRow = webCatData.Tables[0].NewRow();
        tempRow[CategoryWebData.CATEGORY_DES_CURRENCY] = "--请选择--";
        tempRow[CategoryWebData.CATEGORY_ID_FIELD] = "0";
        webCatData.Tables[CategoryWebData.CATEGORY_TABLE].Rows.InsertAt(tempRow, 0);

        CatList.DataTextField = CategoryWebData.CATEGORY_DES_CURRENCY;
        CatList.DataValueField = CategoryWebData.CATEGORY_ID_FIELD;    CatList.DataBind();
    }现在页面的显示没有问题,就是选CatList的第一列和第二列,得到的CatList.SelectedIndex都是0。
      

  3.   

    tempRow[CategoryWebData.CATEGORY_DES_CURRENCY] = "--请选择--";
    tempRow[CategoryWebData.CATEGORY_ID_FIELD] = "0";你是不是用
    "CategoryWebData.CATEGORY_DES_CURRENCY"作为DropDownList的Text值?
    "CategoryWebData.CATEGORY_ID_FIELD"作为DropDownList的Value值?如果是这样的话,是因为你这个List中有两个相同的Value值造成
    很可能就是第一列跟第二列的Value值相同
    你把
    tempRow[CategoryWebData.CATEGORY_ID_FIELD] = "0";
    改成
    tempRow[CategoryWebData.CATEGORY_ID_FIELD] = "-1";
    看看
      

  4.   

    to momoguagua(呱呱):
    果然是這個問題!!
    謝謝,太感謝你了
    这个问题困扰我好久了!
    谢谢!
      

  5.   


    我当时也被这个问题搞了好久,以为也是个bug
    不过,弄明白了就清楚了
    希望大家都别被这个"bug"再散分了
      

  6.   

    从新生成绑定的数据后,clear掉以前的catlist,重新再绑定
      

  7.   

    我同事上次也是这个问题,搞了大半天,所以我一看题目就知道肯定是DataValueField相同了,可惜来晚了...
      

  8.   

    呵呵
    谢谢大家!
    这也该算成一个bug吧,微软怎么可以把SelectedIndex和Value扯在一起呢,呵呵