ช่วยดูให้หน่อยครับผม Select datatable แล้วมันไม่เรียงให้ครับ
อยากให้เรียงแบบนี้ครับ
Code (C#)
private void RefreshData()
{
Cursor = Cursors.WaitCursor;
List<string> _file = new List<string>();
_file = TORServices.clsFile_Path.GetFilesRecursive(TORServices.clsPathData.Path_AllReport, "*.Report");
if (_file.Count <= 0) { return; }
DataTable dt = new DataTable();
dt.Columns.Add(new DataColumn("SampleID",typeof(string)));
dt.Columns.Add(new DataColumn("Parameter", typeof(string)));
dt.Columns.Add(new DataColumn("Value", typeof(string)));
dt.Columns.Add(new DataColumn("Date", typeof(string)));
dt.Columns.Add(new DataColumn("ผู้วิเคราะห์", typeof(string)));
dt.Columns.Add(new DataColumn("Seleced", typeof(Boolean)));
for(int f = 0;f < _file.Count-1;f++)
{
dgvmgKg.DataSource = GetTable("SELECT * FROM `mg_Kg$Print_Area`", _file[f]).DefaultView;
dgvmgL.DataSource = GetTable("SELECT * FROM `mg_L$Print_Area`", _file[f]).DefaultView;
for (int i = 0; i < this.dgvmgL.RowCount - 1; i++)
{
if (this.dgvmgL[this.dgvmgL.ColumnCount - 1, i].Value.ToString().Trim().Length != 0)
{
DataRow dr = dt.NewRow();
dr["SampleID"] = this.dgvmgL[this.dgvmgL.ColumnCount - 6, i].Value.ToString().Trim();
dr["Parameter"] = this.dgvmgL[this.dgvmgL.ColumnCount - 5, i].Value.ToString().Trim();
dr["Value"] = this.dgvmgL[this.dgvmgL.ColumnCount - 4, i].Value.ToString().Trim();
dr["Date"] = this.dgvmgL[this.dgvmgL.ColumnCount - 3, i].Value.ToString().Trim();
dr["ผู้วิเคราะห์"] = this.dgvmgL[this.dgvmgL.ColumnCount - 2, i].Value.ToString().Trim();
dr["Seleced"] = true;
dt.Rows.Add(dr);
}
}
for (int i = 0; i < this.dgvmgKg.RowCount - 1; i++)
{
if (this.dgvmgKg[this.dgvmgKg.ColumnCount - 1, i].Value.ToString().Trim().Length != 0)
{
DataRow dr = dt.NewRow();
dr["SampleID"] = this.dgvmgKg[this.dgvmgKg.ColumnCount - 6, i].Value.ToString().Trim();
dr["Parameter"] = this.dgvmgKg[this.dgvmgKg.ColumnCount - 5, i].Value.ToString().Trim();
dr["Value"] = this.dgvmgKg[this.dgvmgKg.ColumnCount - 4, i].Value.ToString().Trim();
dr["Date"] = this.dgvmgKg[this.dgvmgKg.ColumnCount - 3, i].Value.ToString().Trim();
dr["ผู้วิเคราะห์"] = this.dgvmgKg[this.dgvmgKg.ColumnCount - 2, i].Value.ToString().Trim();
dr["Seleced"] = true;
dt.Rows.Add(dr);
}
}
}
dt.Select("", "SampleID ASC");//ตัวนี้ต้อง select ยังไงครับ
dataGridView1.DataSource =dt ;
Cursor = Cursors.Default;
}
Tag : .NET, Excel (Excel.Application), Win (Windows App), C#, Windows
Date :
2014-08-18 14:07:37
By :
lamaka.tor
View :
1164
Reply :
8
ลองแก้ตรงนี้ดูครับ
dgvmgKg.DataSource = GetTable("SELECT * FROM `mg_Kg$Print_Area` order by SampleID ", _file[f]).DefaultView;
dgvmgL.DataSource = GetTable("SELECT * FROM `mg_L$Print_Area` order by SampleID ", _file[f]).DefaultView;
Date :
2014-08-18 15:52:09
By :
fonfire
ตรงนั้นผ่านไปแล้วครับ
คือผมรวม File Excel หลายๆไฟล์มาไว้ใน Datatable เดียว เพื่อที่จะเรียง SampleID โดยการใช้ Query
แค่นั้นเองครับแต่ทีนี้ผมรวมเป็น Datatable แล้วใช้ Select มันกลับไม่เรียงให้ต้องมาคลิกที่หัวคอลัมน์เหมือนเดิม
ก็เลยสงสัยว่ามันเกิดจากอะไร
ประมาณนั้นครับ
ประเด่นคือ ผมต้องการจะเรียง SampleID ใช้หรือไม่ใช้ Datatable ก็ได้ครับ
ขอแค่ให้ผลออกมาที่ Datagridview เป็นพอ พอจะมีวิธีไม่๊ครับ
Date :
2014-08-18 16:56:34
By :
lamaka.tor
เลือก 2 ตาราง ไม่ลองใช้ union all ดูล่ะครับ
SELECT * FROM `mg_Kg$Print_Area` UNION ALL `mg_L$Print_Area` ORDER BY ????? ",
สำหรับ datagridview sort
http://msdn.microsoft.com/en-us/library/0868ft3z(v=vs.110).aspx
ประวัติการแก้ไข 2014-08-19 07:23:16
Date :
2014-08-19 07:20:08
By :
Chaidhanan
ตรงลนลูปเอา datasource1 กับ datasource 2 มารวมใน dt น่ะ
ลองเปลี่ยนไปใช้ datatable merge ดูนะ โค้ดจะสั้นกว่านั้นเยอะ อย่างมากก็เหลือ 2 บรรทัด
ส่วนถ้าอยาก sort ก็ลอง linq ดู
Code (C#)
DataTable result = (dt.AsEnumerable().OrderBy(r => r.Field<int>("SampleID")).AsDataView().ToTable();
Date :
2014-08-19 08:49:11
By :
ห้ามตอบเกินวันละ 2 กระทู้
แบบนี้ได้ไหมครับ
http://www.vbforums.com/showthread.php?694159-RESOLVED-DataGridView-Columns-sorting-Programmatically
Date :
2014-08-19 12:32:39
By :
fonfire
dataGridView1.DataSource =dt.Select("", "SampleID ASC");
ลองดูครับ
Date :
2014-08-19 16:45:03
By :
PeeCasper
ขอบคุณทุกท่านครับ
ผมจะลองทำดูเด๋วมารายงานให้ทราบครับ
Date :
2014-08-20 08:48:12
By :
lamaka.tor
ได้แล้วครับ ใช้
Code (C#)
dataGridView1.Sort(dataGridView1.Columns[0], ListSortDirection.Ascending);
แถมยังไม่จำเป็นต้องใช้ Datatable อีกด้วย
ขอบคุณทุกท่านครับ
Date :
2014-08-20 10:48:44
By :
lamaka.tor
Load balance : Server 04