CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  ASP.NET

各位老大,dropdownlist取值的问题,查以前的贴也未能解决问题......郁闷!!!

楼主dragonwzw(龙的传人)2004-12-01 23:43:35 在 .NET技术 / ASP.NET 提问

异常详细信息:   System.NullReferenceException:   未将对象引用设置到对象的实例。  
   
  源错误:    
   
   
  行   312: int   i=e.Item.ItemIndex;  
  行   313: DropDownList   SelDDL=(DropDownList)DataGrid1.Items[e.Item.ItemIndex].FindControl("SelDDL");  
  行   314: string   newcarplate=SelDDL.SelectedItem.Text;  
  行   315: Label6.Text=newcarplate;  
  行   316: }  
     
  求教高手,如何解决!! 问题点数:100、回复次数:15Top

1 楼AustinLei(蜀山棋侠)回复于 2004-12-01 23:47:13 得分 10

int   i=e.Item.ItemIndex;  
  DropDownList   SelDDL=(DropDownList)DataGrid1.Items[e.Item.ItemIndex].FindControl("SelDDL");  
  if(SelDDL   !=   null)  
  {  
  string   newcarplate=SelDDL.SelectedItem.Text;  
  Label6.Text=newcarplate;  
  }Top

2 楼AustinLei(蜀山棋侠)回复于 2004-12-01 23:50:52 得分 10

这样可以避免错误,但不一定能够解决问题。  
  DropDownList   SelDDL=(DropDownList)DataGrid1.Items[e.Item.ItemIndex].FindControl("SelDDL");  
  这一句有可能有问题。我这里没有调试环境,我记得是:  
  DropDownList   SelDDL=(DropDownList)e.Items.Cells[XXX].FindControl("SelDDL");  
  其中XXX表示模板列中的控件在DataGrid中的第几列(注意从0开始)。Top

3 楼dragonwzw(龙的传人)回复于 2004-12-01 23:52:05 得分 0

to     AustinLei(蜀山棋侠):这样虽然可以正常运行,但事实上并没有找到我想要的DropDownList控件SelDDL呀!!Top

4 楼dragonwzw(龙的传人)回复于 2004-12-01 23:56:52 得分 0

我觉得还是不行的,因为事实上items>cells,在ITEMS中查找SelDDL都没有找到,在CELLS中也是找不到的。  
  我也曾试过:  
  int   i=e.Item.ItemIndex;  
  DropDownList   SelDDL=(DropDownList)e.Items[i].Cells[0].FindControl("SelDDL");  
  //selddl在第1列  
   
  但运行结果还是一样  
  我把源码帖下面:  
  Top

5 楼dragonwzw(龙的传人)回复于 2004-12-02 00:02:52 得分 0

private   void   DataGrid1_EditCommand(object   source,   System.Web.UI.WebControls.DataGridCommandEventArgs   e)  
  {  
  int   i=e.Item.ItemIndex;  
  DataGrid1.EditItemIndex=(int)e.Item.ItemIndex;  
  BindData();  
  ((TextBox)DataGrid1.Items[i].Cells[1].Controls[0]).Visible=false;  
  DropDownList   SelDDL=new   DropDownList();  
  SelDDL.ID="SelDDL";  
   
                    //为SelDDL绑定数据  
                    。。。。。  
                    //  
                     
                    DataGrid1.Items[i].Cells[1].Controls.Add(SelDDL);  
  }  
   
  private   void   DataGrid1_UpdateCommand(object   source,   System.Web.UI.WebControls.DataGridCommandEventArgs   e)  
  {  
  int   i=e.Item.ItemIndex;  
  DropDownList   SelDDL=(DropDownList)DataGrid1.Items[i].FindControl("SelDDL");  
  string   newcarplate=SelDDL.SelectedItem.Text;  
  Label6.Text=newcarplate;  
  }  
  Top

6 楼gebing0908(破产ing)回复于 2004-12-02 04:31:32 得分 10

不太熟悉C#,但是我在vb里面遇到这种情况一般都是忘记new了。  
  还有就是没有找到那个控件。看看控件名字是不是打对了。Top

7 楼nmlvjun(网事如风)回复于 2004-12-02 08:32:39 得分 10

肯定是没有找到那个控件了Top

8 楼SVG(ben)回复于 2004-12-02 08:48:23 得分 10

1.   看看dropdownlist找到没  
  2.   看看dropdownlist的selected的ListItem是否=null?Top

9 楼jan1010(我的爱情过了保鲜期了)回复于 2004-12-02 08:49:00 得分 10

 
  private   void   DataGrid1_UpdateCommand(object   source,   System.Web.UI.WebControls.DataGridCommandEventArgs   e)  
  {  
                    System.Web.UI.WebControls.DropDownList   SelDDL;  
  int   i=e.Item.ItemIndex;  
  SelDDL=(DropDownList)DataGrid1.Items[i].FindControl("SelDDL");  
  string   newcarplate=SelDDL.SelectedItem.Text;  
  Label6.Text=newcarplate;  
  }  
   
  Top

10 楼ofei(nop)回复于 2004-12-02 08:57:43 得分 10

DropDownList   SelDDL=new   DropDownList();  
  SelDDL.ID="SelDDL";  
   
                    //为SelDDL绑定数据  
                    。。。。。  
                    //  
                     
                    DataGrid1.Items[i].Cells[1].Controls.Add(SelDDL);  
   
  你的控件是动态加进去的  
  在update命令中此控件不一定存在  
  如果不存在肯定出错了  
  你可以在设计时添加   应该就没什么问题了!Top

11 楼chnj1981(怡红公子)回复于 2004-12-02 09:11:26 得分 10

1、如果是在UpdateCommand如下:  
  DropDownList   SelDDL=(DropDownList)DataGrid1.Items[e.Item.ItemIndex].FindControl("SelDDL");       //注意("SelDDL")中的大小写,请确认!  
   
  2、如果是在ItemDataBound如下:  
  DropDownList   SelDDL=(DropDownList)e.Item.FindControl("SelDDL");Top

12 楼chnj1981(怡红公子)回复于 2004-12-02 09:15:51 得分 10

取值:  
  DataRowView   drv   =   (DataRowView)e.Item.DataItem;  
  string   strKeyWord   =   drv["SelDDL"].ToString();Top

13 楼dragonwzw(龙的传人)回复于 2004-12-02 11:19:41 得分 0

问题已解决,多谢各位鼎立相助!  
  问题在于:我按“更新”按钮——》页面刷新——》被我动态加入的DropDownList丢失!——》出现错误!  
   
  解决办法:在DataGrid的模板列中事先加入DropDownList控件,在DataGrid的ItemDataBound事件中对其进行数据绑定!  
   
  唉!要向DataGrid动态加入DropDownList控件很容易实现,但要取得被加入的控件的数据真的好难呀!如果哪位高手有实现这个功能的代码,还望能发给小弟一份:wangzhiwei1980@etang.com;愿以200分相送!Top

14 楼dragonwzw(龙的传人)回复于 2004-12-02 11:22:17 得分 0

下午给以上兄弟散分!Top

15 楼nhf80649(懒星星)回复于 2004-12-02 11:46:50 得分 10

关注"要向DataGrid动态加入DropDownList控件很容易实现,但要取得被加入的控件的数据真的好难呀!如果哪位高手有实现这个功能的代码"Top

相关问题

  • DropDownList控件取值问题
  • DropdownList的取值问题。
  • dropdownlist的取值问题
  • dropdownlist取值的简单问题
  • datagrid中dropdownlist的取值问题!
  • 关于DropDownList控件的取值问题
  • 关于dropdownlist取值的一个问题。
  • 一个datagrid中取值并判断的问题???请教各位老大们
  • dropdownlist控件取值总是能取第一个值
  • 100分 DropDownList 联动后取值和初始化问题。

关键词

  • 控件
  • datagrid
  • 解决
  • 数据
  • source
  • selddl
  • dropdownlist
  • newcarplate
  • itemindex
  • findcontrol

得分解答快速导航

  • 帖主:dragonwzw
  • AustinLei
  • AustinLei
  • gebing0908
  • nmlvjun
  • SVG
  • jan1010
  • ofei
  • chnj1981
  • chnj1981
  • nhf80649

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo