C# WinApp Rows cannot be programmatically added to the DataGridView's rows collection when the control is data-bound.
อันนี้ใช้ Wizard มาหรือปล่าวครับ
พอดีผมไม่เคยใช้เลย
แต่ก็น่าจะคล้าย ๆ กัน คือเราผูก datatable เข้าไปกับ datagridview ใช่ไหมครับ
วิธีแก้คือไป add ข้อมูลที่ datatable แทน
Date :
2016-12-09 10:22:35
By :
fonfire
มันน่าจะมีการเพิ่มข้อมูลไปแล้วน่ะครับ
ถ้าไม่เพิ่ม datagridview จะมีข้อมูลแสดงได้ยังไง
บรรทัดที่เป็นคำสั่ง .fill ก็คือการเขียนเข้า dataset/datatable
และคงมีการตั้งค่า datasource ไว้ให้แล้วน่ะครับ
เพียงแต่ code มันไม่โชว์ตรงนี้
ผมเดาน่ะครับ
พอดีไม่เคยใช้ wizard
เข้าใจว่ามันคงสร้าง code ให้อัตโนมัติ
แล้วซ่อน code เอาไว้
Date :
2016-12-09 13:09:05
By :
fonfire
จริง ๆ ที่ไม่ใช้ wizard เพราะใช้ไม่เป็นครับ
Date :
2016-12-09 14:15:22
By :
fonfire
จริง ๆ เคยใช้ทีนึง
ตอนหัดเขียน รู้สึกว่าเวลาต้องการแก้ไข
มันแก้ลำบาก ก็เลยไม่สนใจอีกเลย
ผมลองให้แล้วน่ะครับ
เป็น datagridview จาก wizard
มันมีการผูก datasource เข้าไปก่อนน่ะครับ
Code (C#)
private void Form1_Load(object sender, EventArgs e)
{
// TODO: This line of code loads data into the 'testDBDataSet.Emp' table. You can move, or remove it, as needed.
this.empTableAdapter.Fill(this.testDBDataSet.Emp);
}
private void button2_Click(object sender, EventArgs e)
{
DataRow dr;
dr = this.testDBDataSet.Emp.NewRow();
dr[0] = "a";
dr[1] = "a";
dr[2] = "a";
this.testDBDataSet.Emp.Rows.Add(dr);
}
Date :
2016-12-09 14:45:57
By :
fonfire
ตอนนี้ที่ติดคือ ID ที่เป็น AutoImplement ครับ
ตามรูปแรกนะครับ
สังเกตว่า column PK จะมีค่าที่ติดลบ
แต่ที่อยากทำก็คือ ไม่ เพิ่มโดยการกรอกข้อมูลลง DataGridView ตามรูปแรกครับ
แต่จะเขียนเป็นโค้ด ในการเพิ่มเช่น
Code (C#)
for (int i = 1; i < 21; i++)
{
tblOne2UpLinkDataGridView.Rows.Add(เพิ่มข้อมูลใน DataGridView );
}
ติดตรงนี้เลยครับ เพราะผมลองใช้
Code (C#)
for (int i = 1; i < 21; i++)
{
tblOne2UpLinkDataGridView.Rows.Add(0 - i, "sfddgfd " + i, "srfsfaeteyaad" + i);
}
แบบนี้ รันไม่ผ่านครับ
ผมทดลองต่อ ตามประสานักวิทย์บ้านๆ
โดยเพิ่มโค้ดหนูลองยาสำหรับ เรียกใช้ DataTable
Code (C#)
public static System.Data.DataTable GetTableForm(string _SQL, string strConn)
{
System.Data.DataSet ds = new System.Data.DataSet();
System.Data.OleDb.OleDbConnection conn2 = new System.Data.OleDb.OleDbConnection(strConn);
conn2.Open();
System.Data.OleDb.OleDbDataAdapter adapter2 = new System.Data.OleDb.OleDbDataAdapter(_SQL, conn2);
adapter2.Fill(ds);
return ds.Tables[0];
}
จากนั้น ก็ ให้ tblOne2UpLinkDataGridView เรียกใช้ DataTable
Code (C#)
tblOne2UpLinkDataGridView.DataSource = GetTableForm("SELECT PK, Link, File FROM tblOne2UpLink", "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\\One2UpLinkFile.accdb");
แบบนี้ก็ไม่มี ตัวเลขติดลบ มาให้
จากนั้น ก็ ให้ tblOne2UpLinkDataGridView เรียกใช้ DataTable ผ่าน BindingSource ดู
Code (C#)
BindingSource bs = new BindingSource();
bs.DataSource = _Database.GetTableForm("SELECT PK, Link, File FROM tblOne2UpLink", "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\\One2UpLinkFile.accdb");
tblOne2UpLinkDataGridView.DataSource = bs;
แบบนี้ก็ไม่มี ตัวเลขติดลบ มาให้เช่นกัน
พอมาถึงตอนนี้เริ่มสับสนแล้วครับ
ตกลงไอ้ที่ติดลบมาจาก class ไหนกันแน่
Date :
2016-12-09 15:21:42
By :
lamaka.tor
ไอ้ที่ติดลบ น่าจะเป็น ค่าบอก AutoIncrement เฉยๆมั้งครับ
ประมาณบอกให้ DataTable รับรู้ว่า Datarow ที่มีค่าติดลบ ก็ขอให้ AddRow ใหม่เข้าไป
Code (C#)
this.tblOne2UpLinkTableAdapter.Fill(this.one2UpLinkFileDataSet.tblOne2UpLink);
for (int i = 1; i < 21; i++)
{
DataRow dr;
dr = this.one2UpLinkFileDataSet.tblOne2UpLink.NewRow();
dr[0] = 0-i;
dr[1] = "TOR " + i;
dr[2] = "Test " + i ;
this.one2UpLinkFileDataSet.tblOne2UpLink.Rows.Add(dr);
}
โค้ดนี้สามารถเพิ่ม ค่าติดลบ ได้แล้วครับ
ขอบคุณมากครับ
Date :
2016-12-09 15:46:26
By :
lamaka.tor
จาก #NO 10 ผมขยายความได้ว่า
--- ผมไม่ได้ใช้ Programming นำ แต่ผมเอาตรรกะทางธุรกิจนำ (Busisness)
วันพรุ่งนี้ถ้าผมโชคดี ผมอาจจะเจอคนที่เขียน FoxPro/Visual FoxPro, และฝั่งเซียน JAVA (อันดับต้นฯของเมืองไท)
--- ผมมีเรื่องที่ต้องคุยกับเขาอีกเยอะแยะ
--- โอกาสน้อยมากฯ ที่ คนระดับเหนือพรหมจะมาคุยกัน
ปล. ไม่ใช่เทพที่คุยกันแต่มันคือ มหาพรหม
Date :
2016-12-10 20:09:16
By :
หน้าฮี
จาก #NO 10 - 11
@TOR_CHEMISTRY, FONFIRE
--- พวกคุณโชคดีที่ผมพูดและเอ่ยคำเป็นภาษา "คน" เพื่อให้พวกคุณได้เข้าใจ
------ มันไม่ใช่เรื่องง่ายฯ สำหรับผม
ปล. เกียรติ/ศักดิ์ศรี ผมไม่ได้เป็นคนสร้าง แต่มันมาจากความรู้สึกเกรงใจ/ไม่แน่ใจ/ไม่สนใจ
จากคนอื่นฯต่างหากเล่า สู๋เอย จะเล่าให้ฟัง
Date :
2016-12-10 20:22:55
By :
หน้าฮี
@หน้าฮี คำพูดคุณฉลาดนะ แต่รู้ไหมว่ามัน "โง่" ในสายตาผมเอามากๆ
Date :
2016-12-15 09:21:30
By :
คนโง่ที่ไม่อวดฉลาด
คำว่า "เวียนว่ายวายวน"
--- ถ้าพูดถึงความรัก
------ ห้วงน้ำลึกนัก
------ ห้วงรักลึกกว่าหลายเท่า
--- ถ้าพูดถึงนักปราชญ์
--- ห้วงนักปราชญ์ อาจะหยั่งไม่ถึงสิ่งเหล่านี้
--- ห้วงคนสามัญชน สิ่งเหล่านี้คือชีวิตประจำวันของตัวเอง
...
...
...
ปล. ในความเป็นจริงของคนเรา "ไม่มีใครอยากจะโง่โดยไม่จำเป็นและไม่มีใครแกล้งฉลาดถ้าขาดโอกาสที่จะแสดง"
รับประกันได้ว่า "ผมอยู่เหนือสิ่งเหล่านี้/สิ่งที่ผมเคยเกริ่นไป"
Date :
2016-12-16 21:11:38
By :
หน้าฮี
Load balance : Server 02