gridview中的代码:
 <asp:GridView ID="GVUserPower" runat="server" Width="100%" style="text-align: center" AutoGenerateColumns="False" DataKeyNames="用户名" OnRowCancelingEdit="GVUserPower_RowCancelingEdit" OnRowDataBound="GVUserPower_RowDataBound" OnRowDeleting="GVUserPower_RowDeleting" OnRowEditing="GVUserPower_RowEditing" OnRowUpdating="GVUserPower_RowUpdating">
            <Columns>
                <asp:BoundField DataField="用户名" HeaderText="用户名" ReadOnly="True" />
                <asp:BoundField DataField="用户密码" HeaderText="用户密码" ReadOnly="True" />
                <asp:TemplateField HeaderText="管理权限">
                    <EditItemTemplate>
                        <asp:DropDownList ID="DLManage" runat="server" Width="60px">
                            <asp:ListItem>有</asp:ListItem>
                            <asp:ListItem>无</asp:ListItem>
                        </asp:DropDownList>
                    </EditItemTemplate>
                    <ItemTemplate>
                        <asp:Label ID="lblManage" runat="server" Text='<%# Bind("管理权限") %>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
我添加的droplist的数据不是数据绑定的,是自己手动添加进去的。
想实现在编辑状态下,droplist中的值保持原有的值。
 protected void GVUserPower_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowState.ToString().IndexOf("Edit") >= 0)//如果处于编辑状态
        {
            string UserName = e.Row.Cells[0].Text;
            string sql = "select 管理权限 from 权限表 where 用户名='"+UserName+"'";
            
            DataSet ds = opls.GetTable(sql, "权限表");
            string manage=ds.Tables[0].Rows[0]["管理权限"].ToString();
            Label lblManage = (Label)e.Row.Cells[2].FindControl("lblManage");
            lblManage.Text = manage;
            DropDownList dlist1 = (DropDownList)e.Row.Cells[2].FindControl("DLManage");
            //dlist1.SelectedIndex = dlist1.Items.IndexOf(dlist1.Items.FindByText(lblManage.Text));
            dlist1.DataSource = ds;
            dlist1.DataTextField = "管理权限";
            dlist1.DataValueField = "管理权限";
            dlist1.DataBind();
}
}
如果这样的话,编辑的时候是能保存原有的值,但是droplist中只有绑定的一个值,没法进行修改
请问高手怎么解决,droplist中的值尽量不要绑定

解决方案 »

  1.   

    protected void GVUserPower_RowDataBound(object sender, GridViewRowEventArgs e) 
        { 
           if (e.Row.RowState.ToString().IndexOf("Edit") >= 0)//如果处于编辑状态 
            { 
               
                Label lblManage = (Label)e.Row.Cells[2].FindControl("lblManage"); 
                DropDownList dlist1 = (DropDownList)e.Row.Cells[2].FindControl("DLManage"); 
                dlist1 .Items.FindByText(lblManage.Text).Selected=true;
            } 
      

  2.   

    会报错啊!dlist1.Items.FindByText(lblManage.Text).Selected = true;
    未将对象引用设置到对象的实例。 
    高手帮忙
      

  3.   

    protected void GVUserPower_RowDataBound(object sender, GridViewRowEventArgs e) 
        { 
            if (e.Row.RowState.ToString().IndexOf("Edit") >= 0)//如果处于编辑状态 
            { 
                string UserName = e.Row.Cells[0].Text; 
                string sql = "select 管理权限 from 权限表 where 用户名='"+UserName+"'"; 
                
                DataSet ds = opls.GetTable(sql, "权限表"); 
                string manage=ds.Tables[0].Rows[0]["管理权限"].ToString(); 
                Label lblManage = (Label)e.Row.Cells[2].FindControl("lblManage"); 
                lblManage.Text = manage; 
                DropDownList dlist1 = (DropDownList)e.Row.Cells[2].FindControl("DLManage"); 
                dlist1.Items.FindByText(manage).Selected=true;
             } 
      

  4.   

    还是会报错, lblManage.Text = manage;
    未将对象引用设置到对象的实例。 
    以前我也是这么弄的,就报着个错
    高手帮忙
      

  5.   


    protected void GVUserPower_RowDataBound(object sender, GridViewRowEventArgs e) 
        { 
            if (e.Row.RowState.ToString().IndexOf("Edit") >= 0)//如果处于编辑状态 
            { 
                string UserName = e.Row.Cells[0].Text; 
                string sql = "select 管理权限 from 权限表 where 用户名='"+UserName+"'"; 
                
                DataSet ds = opls.GetTable(sql, "权限表"); 
                string manage=ds.Tables[0].Rows[0]["管理权限"].ToString(); 
                DropDownList dlist1 = (DropDownList)e.Row.Cells[2].FindControl("DLManage"); 
                dlist1.Items.FindByText(manage).Selected=true;
             } 
    } 把给label赋值的去掉, 编辑状态是找不到label的
      

  6.   

    可以把DropDownList 的绑定放入当页面第一次加载里
    就是 if (!IsPostBack)
         {
                    .......     }