我将数据查询出来,绑定到DataGridView中,界面显示的是1、2、3、4、5的顺序,可是导出的时候顺序就乱了(变成了2、1、5、4、3);
绑定代码 List<ScsjModel> listModel = new List<ScsjModel>();
dataGridView2.DataSource = listModel;
List<ScsjModel> listModel是对2个DataTable循环取出来的值,ScsjModel类的排序也是安装1、2、3、4、5的方式排序,最郁闷的是,我电脑导出来是正常1、2、3、4、5的顺序,可是客户那边到出来的顺序不一样
DataGridView生成Excel标题代码
object[,] objData = new object[RowCount + 1, ColCount];
//获取列标题
foreach (DataGridViewColumn col in myDGV.Columns)
{
objData[RowIndex, ColIndex++] = col.HeaderText;
}
绑定代码 List<ScsjModel> listModel = new List<ScsjModel>();
dataGridView2.DataSource = listModel;
List<ScsjModel> listModel是对2个DataTable循环取出来的值,ScsjModel类的排序也是安装1、2、3、4、5的方式排序,最郁闷的是,我电脑导出来是正常1、2、3、4、5的顺序,可是客户那边到出来的顺序不一样
DataGridView生成Excel标题代码
object[,] objData = new object[RowCount + 1, ColCount];
//获取列标题
foreach (DataGridViewColumn col in myDGV.Columns)
{
objData[RowIndex, ColIndex++] = col.HeaderText;
}
foreach (DataRow dr in dt.Rows)
{
foreach (DataRow drDeta in dtDetails.Rows)
{
if (dr["ztsfh"].ToString() == drDeta["ztsfh"].ToString())
{
mod = new ScsjModel()
{
FinishDate = Convert.ToDateTime(drDeta["FinishDate"]),
Pn = dr["pn"].ToString(),
Qty = Convert.ToInt32(dr["qty"]),
LineName = dr["lineName"].ToString(),
Szfh = dr["szfh"].ToString(),
Ztsfh = dr["ztsfh"].ToString(),
FinishRe = dr["FinishRe"].ToString(),
Complete = Convert.ToInt32(drDeta["Complete"])
}; listModel.Add(mod);
}
}
}
这个是生成ScsjModel对象的方法 foreach (DataGridViewColumn col in dataGridView1.Columns)
{ MessageBox.Show(col.HeaderText);
}
我用上面那个方法测试过,导出Excel的时候,我本机的DataGridView顺序是对的,但是客户那边顺序却是错误的,但是界面显示的顺序又是对的
dataGridView2.DataSource = listModel;绑定的是List,但是这个应该也会安装ScsjModel对象中的顺序或者生成的时候顺序排列吧。
如果你是通过
DataGridView.Columns[i].Name 来获得列的话,顺序会根据以下情况变更的
1、如果没有实体类 则根据你的查询语句中的列的顺序是一样的
2、如果有实体类,比如DataGridView数据源是List<Student>(Student是实体类)则得到的顺序和实体类中的属性的顺序一致。但是我还是很纠结,因为我的实体类是按照顺序排下来的,我本机导出是正常的,客户那边顺序确实错误的,莫非是要打什么补丁?我的蛋都快碎了