各位老大,dropdownlist取值的问题,查以前的贴也未能解决问题......郁闷!!!
异常详细信息: 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




