无法找到列零

发布时间2018/9/21 15:42:05

下载次数 0 次 访问量244 次

免开发-应用中心上线啦,专注提供优质插件源码和产品应用!

无法找到列0
如图,这是try......catch语句丢出的错误,具体打印代码如下:
 e.Graphics.DrawRectangle(pen, potf.X, potf.Y, e.PageBounds.Width, ho);
            PointF pot = new PointF(3, potf.Y + 3);
            e.Graphics.DrawString(saleTag.ProductsDT.Columns[0].ColumnName, saleTag.ContextFont, br, pot);
            //第一条竖线
            potf.X = (e.PageBounds.Width - 2) / 8 * 3;
            e.Graphics.DrawLine(pen, potf.X, potf.Y, potf.X, potf.Y + ht);
            pot.X = potf.X + 3;
            e.Graphics.DrawString(saleTag.ProductsDT.Columns[1].ColumnName, saleTag.ContextFont, br, pot);
            //第二条竖线
            potf.X = (e.PageBounds.Width - 2) / 8 * 5 - 10;
            e.Graphics.DrawLine(pen, potf.X, potf.Y, potf.X, potf.Y + ht);
            pot.X = potf.X + 3;
            e.Graphics.DrawString(saleTag.ProductsDT.Columns [2].ColumnName , saleTag.ContextFont, br, pot);
            //第三条竖线
            potf.X = (e.PageBounds.Width - 2) / 8 * 6 - 6;
            e.Graphics.DrawLine(pen, potf.X, potf.Y, potf.X, potf.Y + ht);
            pot.X = potf.X + 3;
            e.Graphics.DrawString(saleTag.ProductsDT.Columns[3].ColumnName , saleTag.ContextFont, br, pot);
            //第四条竖线
            potf.X = (e.PageBounds.Width - 2) / 8 * 7;
            e.Graphics.DrawLine(pen, potf.X, potf.Y, potf.X, potf.Y + ht);
            pot.X = potf.X + 3;
            e.Graphics.DrawString(saleTag.ProductsDT.Columns [4].ColumnName , saleTag.ContextFont, br, pot);
            //循环产品
            potf.X = 0;
            potf.Y += e.Graphics.MeasureString("冯", saleTag.ContextFont).Height + 4;
红色字体部分就是报错找不到列的部分,还求大虾们给点帮助啊!

------解决方案--------------------
这个saleTag.ProductsDT中ProductsDT  没有定义列呗。
------解决方案--------------------
我很无语.你总得知道点什么,然后才问吧
什么都不知道,让我告诉你什么?
------解决方案--------------------
我怎么知道你数据到底想从哪里来
你自己什么都不知道,那你想让我告诉你什么?
------解决方案--------------------
如果你数据来源是有可能为空,也可以直接加个判断嘛
在你的代码前加上:

if saleTag.ProductsDT == null
    return;
if  (saleTag.ProductsDT.Columns == null)
    return;
if (saleTag.ProductsDT.Columns.Count < 5)
    return;

------解决方案--------------------
你觉得  ProductsDT 这个DataTable里面有列么?

如楼上的做个判断吧,
最好把saleTag 也判断下是否为空
------解决方案--------------------
这是因为saleTag.ProductsDT这里没有数据,如果这是个table,按就先判读里面有没有数据。
------解决方案--------------------
引用:
Quote: 引用:

我怎么知道你数据到底想从哪里来
你自己什么都不知道,那你想让我告诉你什么?

数据是动态地从datagreadview中获取的

判断datagreadview数据是否为0   if(dr.Rows[0].Cells.Count == 0 
------解决方案--------------------
 dr == null)
动态的话是没有数据源绑定的你需要这样:
 public DataTable GetDgvToTable(DataGridView dgv)
        {
            DataTable dt = new DataTable();

            // 列强制转换
            for (int count = 0; count < dgv.Columns.Count; count++)

网友评论

发表评论

欢迎评论哦!