代码有些地方写错了,重新写一遍
我在DataGrid 的EditItemTemplate中有一个DropDownList控件,我想触发它的SelectedIndexChanged事件,这样是可以做到的: protected void change_state_SelectedIndexChanged(object sender, System.EventArgs e) 

DataGrid1.Columns[6].Visible=true; 

但是这样就做不到了: 
protected void change_state_SelectedIndexChanged(object sender, System.EventArgs e) 

if(change_state.SelectedItem.Text=="显示") 

DataGrid1.Columns[6].Visible=true; 

else 
DataGrid1.Columns[6].Visible=false; 

系统会提示:在需要对象实例的地方发现了空值 
我怎样做才能实现第二种方法呢?(VS.net Beat2) 

解决方案 »

  1.   

    出错行在if(change_state.SelectedItem.Text=="显示") 吧,这是因为SelectItem为null.
      

  2.   

    楼上的兄弟,我的DropDownList控件change_state是有“显示”这行Item的,而且change_state的AutoPostBack="True"。
      

  3.   

    正是因为你PostBack了啊,你的SelectItem被刷新了
      

  4.   

    niwalker() 兄,多谢你的点拨,但是,你可以看一下我的if语句,
    if(change_state.SelectedItem.Text=="显示") ,如果DropDownList控件change_state的SelectedItem.Text=="显示"的话执行DataGrid1.Columns[6].Visible=true;否则执行DataGrid1.Columns[6].Visible=false; 
    我想else也包括SelectItem为null的其它一切条件吧。而且我用if(change_state.SelectedItem.Text==null)试过了还是会出现同样的错误提示“在需要对象实例的地方发现了空值”。到底是怎么搞的?
      

  5.   

    ListItem sItem = change_state.SelectedItem;
    if (sItem != null && sItem.Text == "显示")
       DataGrid1.Columns[6].Visible = true;
    else
       DataGrid1.Columns[6].Visible = false;
      

  6.   

    SelectedItem.Text==null
    当然不行SelectedItem==null时是不能获取它的Text属性的
      

  7.   

    icyer() 你好,用你的办法试了一下,还是会有错误提示“在需要对象实例的地方发现了空值”。如果将“ListItem sItem=change_state.SelectedItem;
    ”放到Page_Load中虽无错误提示,但也不会有任何效果。why ???
      

  8.   

    try it:DropDownList ddl = (DropDownList)sender;
    if (ddl == null)
       return;ListItem sItem = ddl.SelectedItem;
    if (sItem != null && sItem.Text == "显示")
       DataGrid1.Columns[6].Visible = true;
    else
       DataGrid1.Columns[6].Visible = false;
      

  9.   

    icyer() 兄的最后一种方法成功通过,thanks!