你试试在dropdownlist的databinding事件中定义初始化值!!

解决方案 »

  1.   

    或者在datagrid_update中初始化可以,在编辑事件中好像不行,我也不知道为啥!!
      

  2.   

    找不到dropdownlist,怎么定义!
      

  3.   

    在DataGrid的编辑事件中不能用e.Item.findControl()方法查找子控件,错误是没有实例化。试一试用DataGrid.items[e.Item.ItemIndex].findControl()
    如果成功,在说原因。否则,就没有必要了。
      

  4.   

    试一下:
    Dp_List_id.SelectedIndex=Dp_List_id.Items.IndexOf(Dp_List_id.Items.FindByValue("KY06"));
      

  5.   

    还有,呢的templatecolume是否包含itemtemplate褐edittemplate
      

  6.   

    我也不知道,Sorry。我帮你去问问看:)
      

  7.   

    我碰到过,这种问题,楼主,你是不是想通过e.Item.Cells(2).FindControl找到编辑状态时的DropDownList控件?答案是:在G_history_EditCommand事件触发时,DropDownList控件根本不存在,他要在G_history_EditCommand触发后,DataBound后,才出来的,所以你的G_history_EditCommand返回的值为nothing,使用值为nothing 的变量当然会出错!
      

  8.   

    cwbboy:
    可我就是在G_history_EditCommand事件里写的,而且是在 
    G_history.EditItemIndex = e.Item.ItemIndex 后写的,请教一下,当初你怎么解决的呢?
      

  9.   

    这时候还没有生成EditTemplate的控件,你只要在HTML中绑定就行了!!
    //写个函数
    public int getSelectedIndex(string str)
    {
    int idx=0;
    dsEditData1=(dsEditData)Session["dsEditData1"];
    for(int i=0;i<dsEditData1.EDIT_DATAlIST.Rows.Count;i++)
    {
    dsEditData.EDIT_DATAlISTRow editRow=(dsEditData.EDIT_DATAlISTRow)dsEditData1.EDIT_DATAlIST.Rows[i];
    string dataStr=editRow.editValue;
    if(dataStr==str)
    {
    idx=i;
    break;
    }
    }
    return idx;
    }//HTML中绑定
    <EditItemTemplate>
    <asp:DropDownList id=DropDownList1 runat="server" DataMember="EDIT_DATAlIST" DataSource="<%# dsEditData1 %>" Width="93px" DataTextField="editData" DataValueField="editValue" SelectedIndex='<%# getSelectedIndex(DataBinder.Eval(Container, "DataItem.personationid").ToString()) %>'>
    </asp:DropDownList>
    </EditItemTemplate>
      

  10.   

    当你将DataGrid的EditIndex设为>-1的索引后,在ItemDataBind事件里可以通过e.Item.FindControl()找到你要的控件,不过你要判断他的值是否为nothing,因为,ItemDataBind在EditIndex为-1(不是编辑状态时,也会触发,此时控件是不存在的。更好的方法是在G_history_EditCommand_PreRender事件内处理,我用的就是这种:G_history_EditCommand_PreRender(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles G_history_EditCommand.ItemDataBoundDim Dp_List_id As DropDownList = e.Item.Cells(2).FindControl("DropDownList_id")  '后面你想做什么都行。。
      '你也可以在这里对DropDownList进行数据邦定End Sub
      

  11.   

    sorry ,,下面这个完全正确G_history_EditCommand_PreRender(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles G_history_EditCommand.PreRenderDim Dp_List_id As DropDownList = e.Item.Cells(2).FindControl("DropDownList_id")  '后面你想做什么都行。。
      '你也可以在这里对DropDownList进行数据邦定End Sub
      

  12.   

    哦,原来是这样,我看你的代码也觉得怪怪的。
            Dp_List_id.SelectedIndex = -1//到此句显示出错,
            未将对象引用设置到对象的实例
            Dp_List_id.Items.FindByValue("KY06").Selected = true
    应该是在绑定数据之后才可以找里面的值,我也试过在DataBind后面执行这些代码
    还是错误。
     cwbboy(好想失恋)
    方法很不错,学习学习。
      

  13.   

    我觉得 kinglht(爱新觉罗至尊宝) 的方法也很好的,好,多谢大家帮助,截帖散分!!!!!