C# WinApp สอบถามเรื่อง Error ของ BindingSource.Add() ครับ
ลองใช้ BindingSource.DataSource Property ดูครับ
Date :
2021-01-10 09:30:11
By :
lakornworld
ตอบความคิดเห็นที่ : 4 เขียนโดย : lamaka.tor เมื่อวันที่ 2021-01-10 13:41:34
รายละเอียดของการตอบ ::
ADO.NET architecture
https://www.codeproject.com/Articles/28819/ADO-NET-Interview-Questions-Part-1
BindingSource Component
https://docs.microsoft.com/en-us/dotnet/desktop/winforms/controls/bindingsource-component-overview?view=netframeworkdesktop-4.8
DataXXX คือ องค์ประกอบของ DataSet
ADO.NET with BindingSource
Database -> Adapter -> DataSet -> BindingSource -> Application
Adapter และ BindingSource เป็น bridge/conduit ไม่ใช่ storage/in-memory
Quote: The BindingSource component is designed to simplify the process of binding controls to an underlying data source . The BindingSource component acts as both a conduit and a data source for other controls to bind to . It provides an abstraction of your form's data connection while passing through commands to the underlying list of data. Additionally, you can add data directly to it, so that the component itself functions as a data source .
คำอธิบาย บอกว่า BindingSource เป็นท่อนำและ DataSource
สำหรับ controls
และจาก
https://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.bindingsource.add?view=net-5.0
Quote: Remarks
The Add method refers the call to the underlying list's Add method.
The internal list must contain homogenous types . If the DataSource property has not already been set, then the first object added to the list defines the type for the list.
This method raises the ListChanged event.
Code
private void PopulateBindingSourceWithFonts()
{
bindingSource1.CurrentChanged += new EventHandler(bindingSource1_CurrentChanged);
bindingSource1.Add(new Font(FontFamily.Families[2], 8.0F));
bindingSource1.Add(new Font(FontFamily.Families[4], 9.0F));
bindingSource1.Add(new Font(FontFamily.Families[6], 10.0F));
bindingSource1.Add(new Font(FontFamily.Families[8], 11.0F));
bindingSource1.Add(new Font(FontFamily.Families[10], 12.0F));
DataGridView view1 = new DataGridView();
view1.DataSource = bindingSource1;
view1.AutoGenerateColumns = true;
view1.Dock = DockStyle.Top;
this.Controls.Add(view1);
box1.Dock = DockStyle.Bottom;
box1.Text = "Sample Text";
this.Controls.Add(box1);
box1.DataBindings.Add("Text", bindingSource1, "Name");
view1.Columns[7].DisplayIndex = 0;
}
ดังนั้น ทางออกคือกำหนด DataSource ให้กับ DataGridView
Date :
2021-01-10 19:08:13
By :
lakornworld
ตอบความคิดเห็นที่ : 7 เขียนโดย : lakornworld เมื่อวันที่ 2021-01-10 21:34:50
รายละเอียดของการตอบ ::
เฮ้อ.... ขอบคุณครับ
กะว่าอยากจะ Add แล้วค่อย save ทีเดียวประมาณนั้นอ่า ครับ
ตอนนี้ก็ใช้ TableAdapter.Insert() บ้านๆง่ายๆ ครับ
Code (C#)
using (frmParameter_Select f = new frmParameter_Select())
{
f.ShowDialog();
if (f.Sampletypes != null && f.Parameters != null && !string.IsNullOrEmpty(f.section_IDTextBox.Text))
{
string lastItem;
int secID = int.Parse(f.section_IDTextBox.Text);
DataGridViewRow dataGridViewRow = method_ParameterDataGridView.LastValue();
if (dataGridViewRow == null)
{
lastItem = "";
}
else
{
if (dataGridViewRow.Cells[0].Value == null)
{
lastItem = "";
}
else
{
lastItem = dataGridViewRow.Cells[0].Value.ToString();
}
}
f.Sampletypes.ForEach(sp => {
f.Parameters.ForEach(prm =>
{
lastItem = TORServices.ExtensionTor.extDatabase.AutoID(lastItem, DATA_LAB._Class.IDFormat.Format_Method_Parameter);
method_ParameterTableAdapter.Insert(lastItem, Method_ID,prm, sp, secID, "", "", "", "", "", false, "UN-000", "", "", "", "", "", "", "", _Class.UserLogin.EmployeeName, DateTime.Now);
});
});
// method_ParameterTableAdapter.Insert(Method_ID,);
}
}
method_ParameterTableAdapter.FillByMethodID(this.dATALAB_Product.Method_Parameter, method_IDTextBox.Text);
ใช้งานได้ ครับ ถึงแม้จะไม่ตอบโจทย์ ก็ตาม
แต่ไม่เป็นไรครับเน้นเขียนง่ายๆ ใช้งานง่ายๆดีกว่า มันยาก หรือ ทำไม่ได้ เราก็เลี่ยงไปก่อน(5555)
Date :
2021-01-10 23:11:37
By :
lamaka.tor
@ละครชีวิต , @เจ้าของกระทู้
มันไม่มีอะไรบรรพกาลหรอก เก่าเก่าก็ยังใช้ได้ ถ้ารู้จักใช้ และใช้ให้เหมาะกับงาน
ใหม่ฯมา ศึกษาเอาไว้ก็ไม่ได้เสียหายอะไรหรอก
ชีวิตมนุษย์นั้นสั้นนัก เก่าหรือใหม่มันก็ไม่แตกต่างกันหรอก
สูงสุดคืนสามัญ ผมก็ใช้ HTML/JavaScript ธรรมดาฯ นี่แหละ
ไม่ซับซ้อน มันไม่ควรจะมีอะไรซับซ้อน
Date :
2021-01-14 17:31:58
By :
ผ่านมา
บางทีเขียนจนเบื่อ เหลืออีกเยอะเลย อันนี้บนเวปนะ
.NET Core 3.1
Date :
2021-01-14 17:44:57
By :
ผ่านมา
เอาจริงๆในฐานะ ที่ผมก็ชอบแอบๆดูโปรแกรม เวลาแวะโน่น แวะนี่
บางทีเดินผ่านเคาน์เตอร์ ก็แอบมองที่จอ ว่าหน้าตาเป็นยังไง
เท่าที่สังเกตมา ความเวอร์วัง ของโปรแกรม หรือ โปรแกรมพัฒนามายังไง
user แทบไม่สนใจเลย
เขาต้องการแค่ว่า โปรแกรมที่เขียนๆกันนั้น มันตอบโจทย์ไม๊ แค่นั้นเองครับ
ถ้ามันตอบโจทย์ใช้ vb 6 ต่อ กับ notepad ง่ายๆ ก็ใช้งานได้เช่นกัน ครับ
ผมเห็นบัญชีใช้โปรแกรมที่ไม่เคยพัฒนามานับเป็นสิบปีๆ เพราะว่าเขาใช้เป็น
ถ้ามีโปรแกรมอื่นๆ ไปขายเขากก็ไม่ซื้อ เพราะว่าเขาใชช้ไม่เป็น
เหมือการที่เราใช้งาน เว็บต่างๆ หรือ แอพ ต่างๆ ก็เพราะ มันใช้ง่าย และ ตอบโจทย์เรานี่แหละครับ
ถ้าไม่ตอบโจทย์ เราก็แค่เปลี่ยน
หรือไม่ก็เพราะอยากเรียนรู้แต่สุดท้าย เราก็จะกลับมาหาสิ่งที่มันตอบโจทย์ตัวเองเสมอ ครับ
Date :
2021-01-14 20:06:47
By :
lamaka.tor
ผมไม่มีเวลา มาทำให้สวยงาม ถ้ามองผิวเผินผ่านผ่าน คิดว่าไม่มีอะไร
แต่จริงฯแล้ว มันซ่อนขุมพลังมหาศาล อยู่ในนั้น หน้าจอเดียวจบ
เห็นหน้านี้เห็นหน้า GL (Voucher)
Date :
2021-01-15 10:54:07
By :
ผ่านมา
ให้ดูเผื่อจินตนาการต่อได้ คนเราต้องมีจินตนาการ
ทำได้ไม่แปลก ทำไม่ได้ซิแปลกและควรภาคภูมิใจ
ทุกฯอย่างมันก็คือภาพลวงตา
Date :
2021-01-15 11:03:16
By :
ผ่านมา
Date :
2021-01-15 11:14:01
By :
ผ่านมา
@ละครชีวิต
รักษาเอกลักษณ์ของตัวเองเอาไว้ จำเอาไว้ว่า ไม่มีใครเหมือนใคร
เราเข้าใจคนอื่นและคนอื่นไม่ใช่สิ่งจำเป็นสำหรับเราเพียงแค่ว่า ให้เขาเข้าใจ
สิ่งที่คุณมี นี่แหละที่เขาเรียกว่า ฟ้าประทาน
Date :
2021-01-15 13:34:46
By :
ผ่านมา
+55555
เชื่อดไก่ให้ลิงดู เจอลิงตาบอด คนเชือดก็ไม่รู้จะทำอย่างไร
จับเอาไปมัดเสาเอาไว้ ก็กลัวว่าเสาจะไม่คงอยู่ค้ำฟ้า
เกรงว่า ลิงจะตายก่อนเสาพัง ก็อาลัยอาวรณ์ว่า เสาที่ขาดหลักยึดมันก็ไม่แตกต่างกับลิงที่ตายไปแล้ว
+55555
Date :
2021-01-17 13:39:07
By :
ผ่านมา
STS อาจหมายถึง รับของครบ/รับของขาด/รับของเกิน
หรืออาจมากกว่านั้น เช่น
รับของเกรด A
รับของเกรด B
รับของเกรด C
หรือไม่แน่ใจ รับเอาไว้ก่อน ย่อยลงไปอีก เช่น รอตรวจสอบ/นับไม่ทัน
รับของเกรด D ของเสีย ของไม่ได้ขนาด เช่น
นมบูดนมเน่า หรือบางทีก็เป็น นมเล็กไปนิด แต่ก็คือนม
บีบฯเล่น พอแก้เหงาได้ มันก็คือนมเหมือนกัน เป็นต้น
และอีกจิปาถะ ยกมานี่ยังไม่ถึงหนึ่งในร้อยเลยนะ
Date :
2021-01-17 14:43:44
By :
ผ่านมา
อยากเห็นใส้ในมันไหม?
--- ปิดงบด้วย SQL Query เดียว (ระดับ บ. มหาชน)
Date :
2021-01-21 10:36:09
By :
ผ่านมา
รูปข้างบน บันทึกเข้าไปตรงฯ (ฝ่าย/แผนก บัญชี) เลยไม่ได้แยกว่า เอกสารมาจากระบบอะไร เช่น
ซื้อ/ขาย/เจ้าหนี้/ลูกหนี้/etc...
Date :
2021-01-21 10:38:15
By :
ผ่านมา
เราแก่แล้ว บ้านเราอายุสั้นกันทุกคน เฉลี่ยไม่ถึง 62 ปี (62 นี่สูงสุดมาหลายรุ่นแล้ว)
--- แก่ตายก็มีไม่น้อย
--- โดนยิงตายก็เยอะ
--- ตายโดยไม่ทราบสาเหตุมีมากเหมือนกัน
อยากเอา Vue3 ใส่เข้าไปในหน้านี้ (เฉพาะ GL หน้าเดียว)
ไม่เคยใช้เหมือนกัน แต่กวาดตาดูแป๊บเดียวก็ทะลุทะลวงหมดแหล่ะ
Date :
2021-01-21 10:54:01
By :
ผ่านมา
ดีแล้วรู้จักถาม จริงฯ ต้องเพิ่มคอลัมภ์ POST
หมายถึงว่า ผ่านรายการไปยังบัญชีแยกประเภท หรือยัง
เอกสารมาจากระบบไหน จริงฯก็ไม่จำเป็นหรอก
รู้บัญชี มองแป๊บเดียว มันก็รู้แล้วว่าเอกสารมาจากไหน
ทรัพย์สิน หนี้สิน ทุน รายได้ ค่าใช้จ่าย มันก็มีอยู่เท่านี้แหละ
โปรแกรมอื่นฯ ถ้าผ่านรายการแล้ว มันจะเตือนว่า ผ่านรายการแล้วห้ามแก้ไขหรือลบทิ้ง
แต่นี่ไม่ แก้ไข/ลบได้ แต่โปรดระมัดระวัง จะให้ดี เย็นฯนี้เราไปหาอะไรอร่อยฯ ลิ้นกินด้วยกันสักมื้อไหม?
(ผัวไม่ต้องพามาด้วยนะ)
Date :
2021-01-21 22:33:52
By :
ผ่านมา
ใส้ในหน้าจอ Voucher (หัวใจของระบบบัญชี) ของจริงเลยนะ
Date :
2021-01-23 10:16:05
By :
ผ่านมา
Load balance : Server 02