我的RowDataBound中,为什么e.Row.RowType == DataControlRowType.DataRow这里始终通不过,不知道为什么..
DB ljjdb = new DB();
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            if ((e.Row.RowState & DataControlRowState.Edit) == 0)
            {
                //保存当前行的au_id的值
                //string au_id = ((TextBox)(GridView_Manager.Rows[e.RowIndex].Cells[3].Controls[0])).Text.ToString().Trim();
                string au_id = this.GridView_Manager.DataKeys[e.Row.RowIndex]["id"].ToString();
                //对DropDownList做数据绑定
                DropDownList dropTemp = (DropDownList)e.Row.Cells[3].FindControl("dropTemp");                if (dropTemp != null)
                {
                    string strSQL = "select * from WCM_Magager_Level";
                    SqlCommand cmd = new SqlCommand(strSQL, ljjdb.myConnection);
                    ljjdb.myConnection.Open();                    dropTemp.DataSource = cmd.ExecuteReader();
                    dropTemp.DataTextField = "level_name";
                    dropTemp.DataValueField = "id";
                    dropTemp.DataBind();                    //到DropDownList中根据au_id的值去找需要设置为选中状态的项目,将其设置为选中
                    ListItem item = dropTemp.Items.FindByText(au_id);
                    if (item != null)
                    {
                        item.Selected = true;
                    }
                    ljjdb.myConnection.Close();
                }
            }        }

解决方案 »

  1.   

    if ((e.Row.RowState & DataControlRowState.Edit) == 0)是不是要写成如下的样子:
    if ((e.Row.RowState & DataControlRowState.Edit) == DataControlRowState.Edit)
      

  2.   

    hbxtlhx 
    什么意思?是编译通不过,还是在执行的时候条件不正确?
      是if   ((e.Row.RowState   &   DataControlRowState.Edit)   ==   0)这句话一直条件不成立,就执行不到下边的语句了,不知道为什么是不是要写成如下的样子: 
    if   ((e.Row.RowState   &   DataControlRowState.Edit)   ==   DataControlRowState.Edit
      还是不行写成这样.也不成立2边..
      

  3.   

    在RowDataBound事件执行的时候应该没有任何的编辑,因为这个时候数据都没有加载呢哪能编辑呢?所以这个条件应该在RowDataBound事件里不会成立。如果确实要判读这个Edit状态,应该换一个事件,但换哪一个我没有测试,我想比如RowCommand应该可以的。
      

  4.   

    楼上的老师,我是参考http://www.dotnetsky.net/netsave/ShowTopic-87563.html
    这个帖子的内容,他都是放在RowDataBound里的...我也是才接触2,0有很多不是很了解,望老师们
    多指点指点迷津~
      

  5.   

    我主要想实现的功能就是gridview里面绑定的dropdownlist中,当我更新的时候自动定位到当前dropdownlist的选种项
      

  6.   

    顶hbxtlhx!!!都没有加载呢哪能编辑呢?
      

  7.   

    我把你的代码复制过去的是可以通过的DataRow
      

  8.   

    if ((e.Row.RowState & DataControlRowState.Edit) == 0)
    这句主要是判断 e.Row.RowState  是否是Edit状态。
    你这边不需要要做这个判断。
          DB ljjdb = new DB();
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                 //保存当前行的au_id的值
              string au_id = this.GridView_Manager.DataKeys[e.Row.RowIndex]["id"].ToString();
                //对DropDownList做数据绑定
              DropDownList dropTemp = (DropDownList)e.Row.Cells[3].FindControl("dropTemp");                if (dropTemp != null)
                    {
                        string strSQL = "select * from WCM_Magager_Level";
                        SqlCommand cmd = new SqlCommand(strSQL, ljjdb.myConnection);
                        ljjdb.myConnection.Open();                    dropTemp.item.Clear();
                        dropTemp.DataSource = cmd.ExecuteReader();
                        dropTemp.DataTextField = "level_name";
                        dropTemp.DataValueField = "id";
                        dropTemp.DataBind();                    //到DropDownList中根据au_id的值去找需要设置为选中状态的项目,将其设置为选中
                        ListItem item = dropTemp.Items.FindByValue(au_id);
                        if (item != null)
                        {
                            item.Selected = true;
                        }
                        ljjdb.myConnection.Close();
                    }
              
            }