簡體   English   中英

添加列表 <string> 到DataTable

[英]Adding List<string> to DataTable

我創建了一個類庫,我正在嘗試將List<string[]>中的數據添加到DataGridView中。

字符串的格式如下:

“測試,1 ^葡萄糖^ 10/24/2013 10:00;測試,2 ^ BUN ^ 10/25/2013 11:00;測試,3 ^ BUN ^ 10 / 25/2013 11:00”

我從另一個程序傳遞字符串。 然后我把它變成一個列表,然后嘗試將它添加到DataTable但沒有這樣的運氣。 我用四列創建了datagridview。

選中 - 復選框

患者姓名 - 字符串

訂單名稱 - 字符串

訂單日期 - 字符串

原因 - 組合框

我收到一個錯誤:

列表大於列數。

注意 :在傳遞給這個程序之前,我仍然可以創建我想要的字符串,所以如果我需要在將字符串傳遞給程序之前對字符串執行某些操作,請告訴我。 有更容易的方法嗎?

我只想要顯示數據,我將繼續處理其余部分。

任何幫助,將不勝感激。

這是我的代碼:

public partial class RenewOrders : Form
{
    public static string strMLMPatientData = string.Empty;

    public RenewOrders(string all_patient_data)
    {
        InitializeComponent();
        strMLMPatientData = "Test, 1^Glucose^10/24/2013 10:00;Test, 2^BUN^10/25/2013 11:00;Test, 3^BUN^10/25/2013 11:00"
    }

    private void RenewOrders_Load(object sender, EventArgs e)
    {    
        this.ConvertStringToList(strMLMPatientData);
    }

    private void ConvertStringToList(string strMLMPatientData)
    {
        var patient_list = strMLMPatientData.Split(';').Select(x => x.Split('^')).ToList();
        DataTable dtTable = ConvertListToDataTable(patient_list);
        dataGridView1.DataSource = dtTable;
    }

    // Convert to DataTable.
    static DataTable ConvertListToDataTable(List<string[]> patient_list)
    {
        // New table.
        DataTable dtTable = new DataTable();

        dtTable.Columns.Add("Name", typeof(string));
        dtTable.Columns.Add("Order Name", typeof(string));
        dtTable.Columns.Add("Order Date/Time", typeof(string));

        foreach (var row in patient_list)
        {
            table.Rows.Add(row);
        }

        return dtTable;
    }
}

首先,您需要適當地吐出字符串以獲取字符串數組列表。 像這樣的東西:

var patient_list = new List<string[]>(strMLMPatientData.Split(';').Select(x => x.Split(',')));

甚至更好:

var patient_list = strMLMPatientData.Split(';').Select(x => x.Split(',')).ToList();

你需要Linq,但你明白了。

然后,您需要向數據表中添加列。 當沒有列時,你不能為它添加行。

在你的函數中嘗試這樣的東西

//add columns appropriately
DataTable table = new DataTable();
table.Columns.Add("Name", typeof(string));
table.Columns.Add("Order", typeof(string));
table.Columns.Add("Date", typeof(string));
foreach (var row in patient_list)
    table.Rows.Add(row);

return table;

在這里查看示例。 就目前而言,您的逗號分隔輸入字符串似乎與您的數據表列結構不匹配。 你需要解決它。 但我希望你知道哪條路走了。

暫無
暫無

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

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