|
|
|
C# WinApp ช่วยดู datagrid ให้หน่อยครับ อยากให้รหัสเดียวกันเป็น สีเดียวกัน |
|
|
|
|
|
|
|
เคยทำแบบนี้อ่ะครับ
DataGridView.CellFormatting Event
https://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.cellformatting(v=vs.110).aspx?cs-save-lang=1&cs-lang=vb#code-snippet-1
อีกแบบที่เคยทำคือเขียนคำสั่งให้ได้สีตั้งแต่ใน stored procedure เลย แล้วก็มาใช้ CellFormatting ทำต่อก็ง่ายดี
|
|
|
|
|
Date :
2017-05-09 17:52:42 |
By :
ABC |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ตอบความคิดเห็นที่ : 1 เขียนโดย : ABC เมื่อวันที่ 2017-05-09 17:52:42
รายละเอียดของการตอบ ::
ผมทำใน DataBindingComplete ครับ
ตอนเปลี่ยนสีไม่มีปัญหาครับ จะมีปัญหาตอน เช็คว่าเป็นรหัสเดียวกันครับ
อย่าง FD 0247 กับ FD 0247 S กับ FD 0247 A กับ FD 0247 B กับ FD 0247 Spi กับ FD 0247 D หรืออื่นๆก็ให้เป็นรหัสเดียวกันครับ
ตัวนี้ผมดึงข้อมูลมาจาก excel ครับ(ไฟล์ แบบฟอร์ม เป็น excel)
Code (C#)
void RefreshData()
{
Cursor = Cursors.WaitCursor;
textBox1.Text = "";
comboBox1.Text = "แสดงทั้งหมด";
System.Text.RegularExpressions.Regex rgx = new System.Text.RegularExpressions.Regex(@"(?:([A-Za-z]+).*?([0-9]+))");
if (System.IO.Directory.GetFiles(TORServices.PathFile.PathData.Path_AllReport, "*.Report", System.IO.SearchOption.AllDirectories).Length <= 0) { Cursor = Cursors.Default; return; }
if (dt != null) { dt = null; }
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("ผู้ตรวจสอบ", typeof(string)));
dt.Columns.Add(new DataColumn("Seleced", typeof(Boolean)));
string FileExcel,sampleID;
int _i;
foreach (string _f in System.IO.Directory.GetFiles(TORServices.PathFile.PathData.Path_AllReport, "*.Report",System.IO.SearchOption.AllDirectories))
{
//เช็คการเปิดไฟล์ถ้าเปิดให้ก๊อบไปวางที่ Temp
if (System.IO.File.GetCreationTime(_f) >= dateTimePicker1.Value && System.IO.File.GetCreationTime(_f) <= dateTimePicker2.Value.AddDays(1))
{
FileExcel = pathTemp + "\\" + String.Format("{0:ddMMyyyy HHmmss}", DateTime.Now) + System.IO.Path.GetExtension(_f);
System.IO.File.Copy(_f, FileExcel);
try
{
OfficeOpenXml.ExcelPackage package = new OfficeOpenXml.ExcelPackage(new System.IO.FileInfo(FileExcel));
OfficeOpenXml.ExcelWorksheet sheet = package.Workbook.Worksheets[1];
int item;
if (sheet.Cells[2, 3].Value != null)
{
DateTime dd = (DateTime)sheet.Cells[2, 3].Value;
for (int i = 1; i < sheet.Dimension.End.Row; i++)
{
item = 15;
if (sheet.Cells[i, item].Value != null)
{
if (sheet.Cells[i, item].Value.ToString() != "" && rgx.IsMatch(sheet.Cells[i, item].Value.ToString()))
{
DataRow dr = dt.NewRow();
sampleID = sheet.Cells[i, item].Value.ToString();
dr["SampleID"] =rgx.Match(sampleID).Groups[1].Value.ToUpper() + " " +string.Format("{0:0000}", int.Parse(rgx.Match(sampleID).Groups[2].Value));
dr["Parameter"] = sheet.Cells[i, item + 1].Value;
dr["Value"] = sheet.Cells[i, item + 2].Value.ToString();
dr["Date"] = dd;
dr["ผู้วิเคราะห์"] = sheet.Cells[i, item + 4].Value;
dr["ผู้ตรวจสอบ"] = sheet.Cells[i, item + 5].Value;
dr["Seleced"] = false;
dt.Rows.Add(dr);
}
}
}
sheet = package.Workbook.Worksheets[2];
for (int i = 1; i < sheet.Dimension.End.Row; i++)
{
item = 18;
if (sheet.Cells[i, item].Value != null)
{
if (sheet.Cells[i, item].Value.ToString() != "" && rgx.IsMatch(sheet.Cells[i, item].Value.ToString()))
{
DataRow dr = dt.NewRow();
sampleID = sheet.Cells[i, item].Value.ToString();
dr["SampleID"] = rgx.Match(sampleID).Groups[1].Value.ToUpper() + " " + string.Format("{0:0000}", int.Parse(rgx.Match(sampleID).Groups[2].Value));
dr["Parameter"] = sheet.Cells[i, item + 1].Value;
dr["Value"] = sheet.Cells[i, item + 2].Value.ToString();
dr["Date"] = dd;
dr["ผู้วิเคราะห์"] = sheet.Cells[i, item + 4].Value;
dr["ผู้ตรวจสอบ"] = sheet.Cells[i, item + 5].Value;
dr["Seleced"] = false;
dt.Rows.Add(dr);
}
}
}
}
package = null;
}
catch { }
finally { System.IO.File.Delete(FileExcel); }
}
try
{
dataGridView1.Invoke(new Action(() =>
{
dataGridView1.DataSource = dt;
dataGridView1.Columns[2].Width = 120;
dataGridView1.Columns[3].Width = 150;
dataGridView1.Columns[4].Width = 180;
dataGridView1.Columns[5].Width = 180;
dataGridView1.Columns[6].Width = 80;
dataGridView1.Sort(dataGridView1.Columns[0], ListSortDirection.Ascending);
}));
}
catch { }
}
Cursor = Cursors.Default;
}
private void dataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
{
//Color cl1 = Color.Beige;
//Color cl2 = Color.LightGreen;
Color cl = Color.Beige;
for (int i = 1; i < dataGridView1.Rows.Count - 1; i++)
{
cl = (dataGridView1[0, i].Value.ToString() == dataGridView1[0, i - 1].Value.ToString()) ? cl : (cl != Color.Beige) ? Color.Beige : Color.LightGreen;
dataGridView1.Rows[i].DefaultCellStyle.BackColor = cl;
dataGridView1[0, i].Style.ForeColor = (dataGridView1[0, i].Value.ToString() == dataGridView1[0, i - 1].Value.ToString()) ? cl : dataGridView1[0, i].Style.ForeColor;
}
}
|
|
|
|
|
Date :
2017-05-09 18:10:44 |
By :
lamaka.tor |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ตัว detail ต่างๆเราไม่สามารถกำหนดได้เพราะขึ้นอยู่กับ User ว่าเขาจะใส่อะไรไปบ้าง(โดยจะต้องต่อท้ายเท่านั้น)
แต่หลัก จะดูที่รหัสตัวอย่างเป็นหลัก เช่น FD 0247 หรือ FD 247 ส่วนจะต่อท้ายเพิ่มอะไร ก็ยังถือว่าเป็นรหัสเดียวกันอยู่
อย่าง FD 0247 กับ FD 0247 S กับ FD 0247 A กับ FD 0247 B กับ FD 0247 Spi กับ FD 0247 D หรืออื่นๆก็ให้เป็นรหัสเดียวกันครับ
|
|
|
|
|
Date :
2017-05-09 18:14:23 |
By :
lamaka.tor |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Date :
2017-05-10 19:27:04 |
By :
lamaka.tor |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ถ้าเป็นผมคง...ลองใช้ select substring , left , right จากพวก FD 0247 กับ FD 0247 S และอื่นๆ ออกมา 7 digits ให้ได้อีก column นึง แล้วค่อยมาให้โค้ดเปลี่ยนสีพิจารณาจาก column ใหม่นี้จะง่ายกว่ามั้ยครับ
ตอนแสดงที่ gridview ก็ซ่อน column นี้ไว้
หวังว่าเราจะมีโชคตรง digit ของ column SampleID นะครับ
|
|
|
|
|
Date :
2017-05-11 16:30:17 |
By :
ABC |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 02
|