未将对象引用设置到对象的实例问题?

caowenkai 2007-05-10 09:07:04
protected void Button2_Click(object sender, EventArgs e)
{
ds = new DataSet();
SqlConnection con = new SqlConnection("Data Source=10.17.8.7;Initial Catalog=CRMOPSC;User ID=sa;Password=password");
SqlDataAdapter da = new SqlDataAdapter("Select Id,LotNo,Enterprise,CardName,CardCode,NameCode,Demand,DeliveryDate,Mark,Height,Width,Length,Weight,Summation,R,Increase_Decrease,Memo,TWFH,Single_Storage,Sum_Storage,Grade,S16,S12,S9,S5,S4,S2 From Alan", con);
da.Fill(ds);
DataTable dt = ds.Tables["Alan"];

dt.Columns["Id"].ColumnName = "ID";
dt.Columns["LotNo"].ColumnName = "订单批号";
dt.Columns["Enterprise"].ColumnName = "业";
dt.Columns["CardName"].ColumnName = "客户";
dt.Columns["CardCode"].ColumnName = "单号";
dt.Columns["NameCode"].ColumnName = "客户编号";
dt.Columns["Demand"].ColumnName = "需求";
dt.Columns["Mark"].ColumnName = "料";
dt.Columns["Height"].ColumnName = "厚";
dt.Columns["Width"].ColumnName = "宽";
dt.Columns["Length"].ColumnName = "长";
dt.Columns["Weight"].ColumnName = "重";
dt.Columns["Summation"].ColumnName = "总";
dt.Columns["R"].ColumnName = "R";
dt.Columns["Increase_Decrease"].ColumnName = "增减";
dt.Columns["Memo"].ColumnName = "备注";
dt.Columns["TWFH"].ColumnName = "T双喷";
dt.Columns["Single_Storage"].ColumnName = "单存";
dt.Columns["Sum_Storage"].ColumnName = "总存";
dt.Columns["Grade"].ColumnName = "查特代";
dt.Columns["S16"].ColumnName = "16支装";
dt.Columns["S12"].ColumnName = "12支装";
dt.Columns["S9"].ColumnName = "9支装";
dt.Columns["S5"].ColumnName = "5支装";
dt.Columns["S4"].ColumnName = "4支装";
dt.Columns["S2"].ColumnName = "2支装";

StringWriter sw = new StringWriter();
GridView dv = new GridView();
dv.DataSource = dt;
dv.DataBind();
dv.AllowPaging = false;

Response.ClearContent();
Response.Charset = "GB2312";
Response.AppendHeader("Content-Disposition", "attachment;filename=MyExcelFile.xls");
// 如果设置为 GetEncoding("GB2312");导出的文件将会出现乱码!!!
Response.ContentEncoding = System.Text.Encoding.UTF8;
Response.ContentType = "application/excel";

HtmlTextWriter htw = new HtmlTextWriter(sw);

dv.RenderControl(htw);

Response.Write(sw.ToString());
Response.End();
}
上面是我一个BUTTON里的事件,上面代码是一个导出excel,以上代码运行是对的,但是点击BUTTON的时候会报 dt.Columns["Id"].ColumnName = "ID";未将对象引用设置到对象的实例,请高手指点在线等。应该怎么修改。
...全文
628 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
sunxiaoming_2002 2007-06-08
  • 打赏
  • 举报
回复
不好意思,刚才没有理解楼主的意思
你的问题确实像lxcnn(过客)所说的,表名搞错了

数据库表名和dataset表名不是一回事

而你用ds.Tables["Alan"]中的Alan表并未定义,所以出错了
应该把da.Fill(ds);改成da.Fill(ds, "Alan");
sunxiaoming_2002 2007-06-08
  • 打赏
  • 举报
回复
我也遇到过类似的问题,找了半天,数据库连接没有问题,就在网上找,有人说要下个补丁,我下了,就好了,呵呵
如果你确定数据库连接没有问题那么就是下载个.net Framwork sp1补丁微软官方网站有下载的,地址如下:http://www.microsoft.com/downloads/details.aspx?FamilyID=a8f5654f-088e-40b2-bbdb-a83353618b38
zhangqin110 2007-05-17
  • 打赏
  • 举报
回复
da.Fill(ds,"Alan");
eagles4321 2007-05-10
  • 打赏
  • 举报
回复
楼上正解,你在填充Dataset时,要给表起名
-过客- 2007-05-10
  • 打赏
  • 举报
回复
da.Fill(ds);
上面这样写ds.Tables["Alan"]为什么会为空呢?
-----------------------
da.Fill(ds,"Alan");

但记住这里的Alan与表里的Alan不是一回事,可以用其它字符串来命名表名

da.Fill(ds,"test");
那么使用时就是DataTable dt = ds.Tables["test"];
caowenkai 2007-05-10
  • 打赏
  • 举报
回复
恩是的ds.Tables["Alan"]是为空,但是为什么会为空的呢?我分明
ds = new DataSet();
SqlConnection con = new SqlConnection("Data Source=10.17.8.7;Initial Catalog=CRMOPSC;User ID=sa;Password=password");
SqlDataAdapter da = new SqlDataAdapter("Select Id,LotNo,Enterprise,CardName,CardCode,NameCode,Demand,DeliveryDate,Mark,Height,Width,Length,Weight,Summation,R,Increase_Decrease,Memo,TWFH,Single_Storage,Sum_Storage,Grade,S16,S12,S9,S5,S4,S2 From Alan", con);
da.Fill(ds);
上面这样写ds.Tables["Alan"]为什么会为空呢?
plsandslp 2007-05-10
  • 打赏
  • 举报
回复
ds.Tables["Alan"]没有被填充上值,但你赋值给了DataTable dt 所以报错,先判断一下ds.Tables["Alan"]==null然后再赋值
heyidan 2007-05-10
  • 打赏
  • 举报
回复
嗯。是的。如果没有将一个对象进行初始化而直接使用的话,那么就会出现未将什么对象初始化到实例什么一系列的错误,呵呵
tingdao99 2007-05-10
  • 打赏
  • 举报
回复
DataTable dt = ds.Tables[0];
问题是ds.Tables["Alan"]是一个不存在的一个table。dot net中返回的datatable如果不指定名字,会自动产生一个表名称,但不是数据库中的名称。千万不要混淆了。
-过客- 2007-05-10
  • 打赏
  • 举报
回复
try

da.Fill(ds,"Alan");

如果这样还报错,断点跟踪下da是否正确返回了结果
babyrockxray 2007-05-10
  • 打赏
  • 举报
回复
ds.Tables["Alan"]为空的拉
所以报那个错误
xiyun 2007-05-10
  • 打赏
  • 举报
回复
da.Fill(ds);
会不会这里填充时,是fill到另一个表里了呢,而不是alan,调试下看看
  • 打赏
  • 举报
回复
DataTable dt = ds.Tables["Alan"];


换成

DataTable dt = new DataTable();
dt = ds.Tables[0];

试试
lowtemper 2007-05-10
  • 打赏
  • 举报
回复
某个变量是null,调试一下就出来了

62,244

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧