我正在使用来自不同数据表的大量数据设置此datagridview,因此我使用了JOIN。但是,datagridview似乎按表的顺序显示列。
这是我的代码:
Using conn As New MySqlConnection(connString)
conn.Open()
Using cmd As New MySqlCommand("SELECT * FROM tblclientprofile LEFT JOIN tblbusinessinfo ON tblbusinessinfo.B_IdNo = tblclientprofile.IdNo
LEFT JOIN tblownerprofile ON tblownerprofile.O_IdNo = tblbusinessinfo.B_IdNo
LEFT JOIN tblbusinessprofile ON tblbusinessprofile.BP_IdNo = tblownerprofile.O_IdNo
LEFT JOIN tblbusinessoperations ON tblbusinessoperations.BO_IdNo = tblbusinessprofile.BP_IdNo
LEFT JOIN tblbfs ON tblbfs.BF_IdNo = tblbusinessoperations.BO_IdNo
LEFT JOIN tblcapitalstructure ON tblcapitalstructure.IdNo = tblbfs.BF_IdNo
LEFT JOIN tblassetsize ON tblassetsize.IdNo = tblcapitalstructure.IdNo
LEFT JOIN tblsaleshistory ON tblsaleshistory.IdNo = tblassetsize.IdNo
LEFT JOIN tbldomesticmarket ON tbldomesticmarket.IdNo = tblsaleshistory.IdNo
LEFT JOIN tblexportmarket ON tblexportmarket.IdNo = tbldomesticmarket.IdNo
LEFT JOIN tblprodservline ON tblprodservline.IdNo = tblexportmarket.IdNo
", conn)
With cmd
.CommandType = CommandType.Text
End With
Using da As New MySqlDataAdapter
da.SelectCommand = cmd
Using dt As New DataTable
da.Fill(dt)
dgv2.DataSource = dt
End Using
End Using
End Using
End Using
tblclientprofile具有以下字段:IdNo,Status,Name,Position等.tblbusinessinfo具有以下字段:BusinessRegNo,BusinessName,BusinessType等。
datagridview的结果依次为IdNo,Status,Name,Position,BusinessRegNo,BusinessName,BusinessType。
我想要的是按以下顺序显示:IdNo,Name,Position,BusinessRegNo,BusinessName,BusinessType,Status
我对列失序的简单解决方案是添加这个循环,将DisplayIndex
设置为Index
。在你的电话dgv2.DataSource = dt
之后把这个循环放好
For Each col As DataGridViewColumn In dgv2.Columns
col.DisplayIndex = col.Index
Next
Index
在添加时分配给每个列。我不确定为什么DisplayIndex
会出现故障,但上面的脚本会修复它。
另外,我想指出这与SQL无关。这是DataGridView中发生的事情的结果。话虽如此,您仍然应该选择列而不是使用*。