簡體   English   中英

如何從Listbox(在C#中)中獲取所有元素/字段並將它們放入DataTable中?

[英]How can I take all the elements / fields from a Listbox (in C#) and put them into a DataTable?

我有一個有ListBox的獲勝表格。 我想動態創建一個DataTable (到現在為止,我只聲明了一些列-您可以在代碼中看到-以后我想用它來將DataTable鏈接到現有的空DataBase ),但是不知道如何將其鏈接到Listbox是為了從中“獲取”四個元素: event_time , event_filename , event_name , event_fullpath 請幫助,

到目前為止,我的部分代碼是:

    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中的所有字段都具有與聲明的DataTable和數據庫相同的確切名稱。

您可以在表單中具有一個類型為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字段作為參數發送到保存數據的方法即可。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM