也谈"未将对象引用设置到对象的实例"
昨天搞了个排序, 在DataGrid里放了两个asp:ButtonColumn, 写上CommandName在_ItemCommand写好之后, 第一次运行, 按钮的命令事件可以被执行, 但翻页时缺出现错误 "未将对象引用设置到对象的实例"
Label lblcid = (Label)e.Item.FindControl("CID");
int id = int.Parse(lblcid.Text);
通常出现此错误多由于FindControl后的ID不存在造成,我的分明是存在的阿, 而且第一次运行都可以通过的;为什么翻页时就报错呢?观察代码,一遍,二遍,.. 似乎没有什么问题呀!--经过反复周折后,问题最后终于被找出来啦!原来我在_ItemCommand事件中先写的Label lblcid = (Label)e.Item.FindControl("CID");
int id = int.Parse(lblcid.Text);
而后才switch(e.CommandName){...},这样就会产生错误喽.我把lblcid = (Label)e.Item.FindControl("CID"); id = int.Parse(lblcid.Text);写进switch里,终于可以正常翻页啦! e.Item.FindControl 在ItemCommand里还是在e.CommandName下用的好, 这样就安全啦.至此,这个Bug宣告解除,总结一下:我们做程序的时候,不能想当然阿, 要不然真的有莫名其妙的错误哦..
Label lblcid = (Label)e.Item.FindControl("CID");
int id = int.Parse(lblcid.Text);
通常出现此错误多由于FindControl后的ID不存在造成,我的分明是存在的阿, 而且第一次运行都可以通过的;为什么翻页时就报错呢?观察代码,一遍,二遍,.. 似乎没有什么问题呀!--经过反复周折后,问题最后终于被找出来啦!原来我在_ItemCommand事件中先写的Label lblcid = (Label)e.Item.FindControl("CID");
int id = int.Parse(lblcid.Text);
而后才switch(e.CommandName){...},这样就会产生错误喽.我把lblcid = (Label)e.Item.FindControl("CID"); id = int.Parse(lblcid.Text);写进switch里,终于可以正常翻页啦! e.Item.FindControl 在ItemCommand里还是在e.CommandName下用的好, 这样就安全啦.至此,这个Bug宣告解除,总结一下:我们做程序的时候,不能想当然阿, 要不然真的有莫名其妙的错误哦..