Vb.net DataGridView正在丢失设计时指定的初始状态
当我试图更改DataGridView的数据源时,我失去了在设计时指定的列及其类型复选框、组合框的顺序 这就像更改数据源再次生成datagridview一样,为什么?如何在不丢失这些信息的情况下更改数据源 如果你知道,请给我帮助 提前谢谢 在表单加载时,我做了如下操作Vb.net DataGridView正在丢失设计时指定的初始状态,vb.net,Vb.net,当我试图更改DataGridView的数据源时,我失去了在设计时指定的列及其类型复选框、组合框的顺序 这就像更改数据源再次生成datagridview一样,为什么?如何在不丢失这些信息的情况下更改数据源 如果你知道,请给我帮助 提前谢谢 在表单加载时,我做了如下操作 Private Sub frmGrid_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim Path as
Private Sub frmGrid_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim Path as string
Path="C:\......Myfile.xml"
Dim oData as dataset
oData = New DataSet
oData.ReadXml(Path)
oData.AcceptChanges()
DataGridView1.DataSource = oData
DataGridView1.DataMember = oData.Tables(0).TableName
end sub
到目前为止,一切都很好,设计模式得以保留
然后在我的界面中,我有一个按钮将我的网格内容保存到一个excel文件中,它是一个xml,格式为excel
然后我想在一个按钮操作上导入它,所以我做了以下操作
Private Sub Button13_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button13.Click
Dim MyDs As DataSet
MyDs = New DataSet
Dim InputFileStream As New System.IO.FileStream(Path, System.IO.FileMode.Open)
MyDs = ImportExcelXML(InputFileStream, True, True)
MyDs.ReadXml(Path)
MyDs.AcceptChanges()
DataGridView1.DataSource = MyDs
DataGridView1.DataMember = MyDs.Tables(0).TableName
end sub
可能您已将GenerateColums属性设置为True 这意味着GridView将生成columnsname,并根据数据排序生成它们的数量 如果案例数据表中的数据源不同,则会出现不同的网格 如果数据源不同,您可以设计gridView的布局,但之后必须根据需要手动将数据绑定到列
RowDataBound事件。您试图分配给DataGridView1的datatable。DataSource的结构与您在设计时定义DataGridView的方式不同。在将新数据表重新分配给数据源之前,在代码中放置一个断点,并查看结构中的不同之处。最有可能的情况是,您有更多或更少的数据列,或者这些列的顺序可能不同。它们甚至可能被命名为不同的。如果在设计时将DataGridViewColumn的DataProperty设置为特定名称,则名称需要精确
您只需在该断点处进行检查,看看有什么不同。我找到了解决方案,您的提示帮助我找到了正确的方向来找到解决方案 我所做的是装表格
MaGrille.DataSource = oData
MaGrille.DataMember = oData.Tables(0).TableName
然后在按钮中单击我执行:
MaGrille.DataSource = MyDs
MaGrille.DataMember = MyDs.Tables(0).TableName
问题是网格正在重建,我丢失了格式、列顺序等
经过多次测试,我了解到它不起作用,因为数据表的名称不同!我不明白为什么,但这似乎是个错误。
我有以下价值观
oData.0=声明
MyDs.table0=Sheet1
所以我注意到,如果我通过声明而不是Sheet1重命名MyDs.Tables0,然后单击按钮,这次我不会丢失格式,也不会丢失订单
这激励我找到了解决方案:
在多次尝试之后,我意识到如果不在表单加载上执行
MaGrille.DataSource = oData
MaGrille.DataMember = oData.Tables(0).TableName
MaGrille.DataSource = oData.Tables(0)
然后单击按钮:
MaGrille.DataSource = MyDs
MaGrille.DataMember = MyDs.Tables(0).TableName
我有:
模板荷载
MaGrille.DataSource = oData
MaGrille.DataMember = oData.Tables(0).TableName
MaGrille.DataSource = oData.Tables(0)
然后点击按钮
MaGrille.DataSource = MyDs.Tables(0)
即使oData.table0.TableName与MyDs.table0.TableName不同,所有这些都可以正常工作
我现在找到了解决办法,但仍然不明白为什么如果有人得到解释,请让我知道
再次感谢所有当您在Excel中打开导出的XML文件时,列的顺序是否正确,或者它们是否已从GridView中更改了顺序?AutoGenerateColumns我找不到此属性!我看到的唯一generate属性是generate members,是的,这是真的吗?你确定那房子的名字吗?