טעינת נתונים לעמודות קיימות DataGridView
-
אני טוען נתונים מטבלה מsql לייט, לפקד DataGridView שיש בו 3 עמודות, ואני רוצה שהנתונים ייכנסו לעמודות שכבר קיימות בפקד, ולא כמו עכשיו שהם נכנסות בעמודות חדשות
using System; using System.Data; using System.Data.SQLite; using System.Windows.Forms; namespace ada { public partial class list : Form { private DataGridView View; public list() { InitializeComponent(); LoadData(); } private void LoadData() { using (SQLiteConnection connection = new SQLiteConnection(Globals.connectionString)) { connection.Open(); string selectSql = "SELECT id, family || ' ' || name AS 'all_name', degree FROM t2"; using (SQLiteCommand cmd = new SQLiteCommand(selectSql, connection)) { using (SQLiteDataAdapter adapter = new SQLiteDataAdapter(cmd)) { DataTable dataTable = new DataTable(); adapter.Fill(dataTable); View.DataSource = dataTable; } } connection.Close(); } } } }
-
תיתן לכל עמודה את השם הנכון במאפיין DataPropertyName.
אתה יכול למנוע יצירה של עמודות שלא יצרת בעצמך על ידי הגדרת המאפיין AutoGenerateColumns של הgrid לfalse.נ.ב.
להלן כמה נגיעות בקוד:private void LoadData() { string selectSql = "SELECT id, family || ' ' || name AS 'all_name', degree FROM t2"; using (SQLiteConnection connection = new SQLiteConnection(Globals.connectionString)) using (SQLiteCommand cmd = new SQLiteCommand(selectSql, connection)) using (SQLiteDataAdapter adapter = new SQLiteDataAdapter(cmd)) { DataTable dataTable = new DataTable(); adapter.Fill(dataTable); View.DataSource = dataTable; } }
השינויים הם:
א. עיצוב הusing המקוננים כאחד (כך מקובל וזה נחמד יותר)
ב. לא צריך לפתוח קונקשיין בעת שימוש בadapter כי הוא עושה זאת לבד.
ג. לא צריך לסגור קונקשיין בשימוש בusing כי הdispose סוגר.והמלצה, להשתמש בספריית Dapper ולחסוך התקשקשות רבה (using בודד, אי צורך בDatatTable+DataAdpter, פרמטרים מוגנים מהזרקה ועוד).
שנשמע ונתבשר בשרות טובות. -
מדריך בסיסי ל dapper לפשוטי העם (כמוני)
https://www.geeksforgeeks.org/c-dapper/