2012-12-22 57 views
0

我有一個贏的形式,其中有一個ListBox。我要動態地創建DataTable(到現在我只宣佈了一些列 - 你可以在代碼中看到 - 這是我以後要使用到DataTable鏈接到現有空DataBase),但不知道如何將它鏈接到Listbox爲了「取」它的4個元素:event_time , event_filename , event_name , event_fullpath。請幫助,我的代碼如何從列表框(使用C#)獲取所有元素/字段並將它們放入DataTable中?

部分到目前爲止是:

private delegate void AppendListHandler(string event_filename, String event_name, String event_fullpath); 

    private void AppendText(string event_filename, String event_name, String event_fullpath) 
    { 
     if (lstResultLog.InvokeRequired) 
      lstResultLog.Invoke(new AppendListHandler(AppendText), new object[] { event_filename, event_name, event_fullpath }); 
     else 
     { 
      DateTime event_time = DateTime.Now; 
      //String event_duration = event_time.ToString("HH:mm"); 
      lstResultLog.Items.Add(event_time + event_filename + event_name + event_fullpath); 
     } 

     DataTable table = new DataTable("tbl_Event"); 
     table.Columns.Add("event_duration"); 
     table.Columns.Add("event_name"); 
     table.Columns.Add("event_filename"); 
     table.Columns.Add("event_fullpath"); 
     table = (DataTable)lstResultLog.DataSource; 
    } 

lstResultLog是ListBox的名字,都來自ListBox中的字段有確切的名稱,如申報數據表,而且由於該數據庫。

回答

1

您可以在表單中有DataTable類型的字段,將持有你想要的數據。然後,當你添加項目到你的列表框,添加一行到數據表具有相同的數據:

public class YourForm 
{ 
    private DataTable _table; 
    public YourForm() 
    { 
     InitializeComponents(); 
     _table = BuildDataTable(); 
    } 

    private DataTable BuildDataTable() 
    { 
     DataTable table = new DataTable("tbl_Event"); 
     table.Columns.Add("event_duration"); 
     table.Columns.Add("event_name"); 
     table.Columns.Add("event_filename"); 
     table.Columns.Add("event_fullpath"); 
     return table; 
    } 

    private void AppendText(string event_filename, String event_name, String event_fullpath) 
    { 
     if (lstResultLog.InvokeRequired) 
      lstResultLog.Invoke(new AppendListHandler(AppendText), new object[] { event_filename, event_name, event_fullpath }); 
     else 
     { 
      DateTime event_time = DateTime.Now; 
      lstResultLog.Items.Add(event_time + event_filename + event_name + event_fullpath); 
      //Create new row 
      var row = _table.NewRow(); 
      // Fill row values 
      row["event_name"] = event_name; 
      // Add row to table 
      _table.Rows.Add(row); 
     } 
    } 
} 

而當你需要發送數據到數據庫中,只需發送_table字段作爲參數傳遞給方法保存數據。

+0

好,謝謝,我會試試看,並張貼如果它的工作。 – Paradigm

+0

你好,它是一個好主意!如果你不介意我也想問一下:我不知道如何: – Paradigm

+0

@MPN,這是什麼問題? – RePierre

相關問題