Private Sub DgEditRole_EditCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DgEditRole.EditCommand
        Dim PerDdlRoleName As DropDownList = e.Item.FindControl("DdlRoleName")
        Dim RoleName As String = PerDdlRoleName.SelectedItem.Text ''''''''出错的语句
        Response.Write(PerDdlRoleName.SelectedItem.Text)
    End Sub错误提示:未将对象引用到实例
要找的控件id DdlRoleName是绝对没有错的
dropdownlist控件我是加在datagrid的edit模板中
请问这个错误是什么原因,应该这么解决?
在线等

解决方案 »

  1.   

    那么你就加一句如果e.Item.FindControl("DdlRoleName")他不位null的话,再进行你的操作试试看
    if(e.Item.FindControl("DdlRoleName")!=null)
    ...\\这个市C#的,vb的不知道怎么写
      

  2.   

    这是事件的先后顺序的问题:
    因为dropdownlist是在editItem里的,当点击edit按钮触发EditCommand事件时,这个dropdownlist都还没有生成,肯定找不到
      

  3.   

    正确的实现方法是: private void DataGrid1_EditCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
            {
                DataGrid1.EditItemIndex = e.Item.ItemIndex;
                DataGrid1.DataSource = dt;//需要重新绑定
                DataGrid1.DataBind();
            }        private void DataGrid1_ItemCreated(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
            {
                if(e.Item.ItemType == ListItemType.EditItem)
                {
                    DropDownList ddlst = e.Item.FindControl("dropdownlist1") as DropDownList;
                    ddlst.Items.Add("abc");//这里就可以找到
                }
            }        private void DataGrid1_UpdateCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
            {
                 DropDownList ddlst = e.Item.FindControl("dropdownlist1") as DropDownList;//这里也可以找到
            Response.Write(ddlst.SelectedValue );
            }
      

  4.   

    vb语法就是
     Private Sub DataGrid1_EditCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGrid1.EditCommand
            Me.DataGrid1.EditItemIndex = e.Item.ItemIndex
        End Sub    Private Sub DataGrid1_ItemCreated(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles DataGrid1.ItemCreated
            Dim ddlst As DropDownList = e.Item.FindControl("dropdownlist1")
            ddlst.SelectedIndex = 0
        End Sub    Private Sub DataGrid1_UpdateCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGrid1.UpdateCommand
            Dim ddlst As DropDownList = e.Item.FindControl("dropdownlist1")
            Response.Write(ddlst.SelectedValue)
        End Sub
      

  5.   

    Private Sub DgEditRole_ItemCreated(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles DgEditRole.ItemCreated
            Dim PerDdlRoleName As DropDownList = e.Item.FindControl("DdlRoleName")
            Dim RoleName As String = PerDdlRoleName.SelectedItem.Text
                 Response.Write(PerDdlRoleName.SelectedItem.Text)
        End Sub
    这样加了,还是报那个错,同一个地方
      

  6.   

    数据我是直接在属性里面添加的,而且有select选项等于true,所以应该不是数据的问题
      

  7.   

    漏了判断条件了
    Private Sub DataGrid1_ItemCreated(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles DataGrid1.ItemCreated
     if e.Item.ItemType = ListItemType.EditItem then
            
    Dim ddlst As DropDownList = e.Item.FindControl("dropdownlist1")
            ddlst.SelectedIndex = 0
    end if
        End Sub