1

このコードで入力されたリスト ボックスがあります。

  • lstOutcome.Items.Add(lstMap.SelectedItem.Text);

リストボックス lstOutcome では、リストボックスをループして、1 番目、2 番目などのリスト項目の値を取得できる必要があります。

各行をループしてその行の値を取得する必要があるのは、その行に含まれていた値を使用して別の値を入力できるようにするためです。

たとえば、私のリストボックスには次のものがあります。

  • 1
  • 2
  • 3

ボタンのクリック時にリストボックスをループして、txtboxes に値を割り当てられるようにする必要があります。

  • textbox1.Text = 'リストボックスの項目 1';
  • textbox2.Text = 'リストボックスの項目 2';
  • textbox3.Text = 'リストボックスの項目 3';

配列が必要かどうか、またはこれをどのように達成できるかわかりません。この例のポイントは、リストボックス内の項目を実際に使用して列をマップすることです。Microsoft Excel スプレッドシートをインポートしています。lstMap には列名があり、データベースと一致する列名を取得しようとしています。このコードを使用して、リストボックスの値を取得しようとしています:

foreach(object li in lstOutcome.Items)
{
    bulkCopy.DestinationTableName = "Customers";
    //Amount to bulkcopy at once to prevent slowing with large imports.
    bulkCopy.BatchSize = 200;
    SqlBulkCopyColumnMapping map1 = new SqlBulkCopyColumnMapping(li.ToString(), "CustomerID");
    bulkCopy.ColumnMappings.Add(map1);
4

3 に答える 3

1

次のように、テキストボックスを配列に配置する必要があります。

Textbox[] textboxes = new Textbox[] { textbox, textbox2, textbox3 };

for (int i = 0; i < listBox1.Items.Count; i++) {
    textboxes[i].Text = "Item: " + listBox1.Items[i].ToString();
}

リストボックスに3つ以上の項目がある場合、テキストボックスが不足するため、これは失敗することに注意してください。より完全な解決策については、いくつかのコンテキストを追加してください。テキストボックスは何のためのものですか?リストボックスのデータは何から来ていますか?

于 2009-10-08T16:20:11.087 に答える
1

あなたの答えを書くためのより効率的な方法は次のようになります:

static readonly string[] FieldNames = new string[] { "CustomerID", "Name", "Address", ..., "Email" };

using(SqlBulkCopy bulkCopy = new SqlBulkCopy(sqlConnectionString, options)) {

    bulkCopy.DestinationTableName = "Customers";
    //amount to bulkcopy at once to prevent slowing with large imports
    bulkCopy.BatchSize = 200;

    for(int i = 0; i < FieldNames.Length; i++) {
        bulkCopy.ColumnMappings.Add(
            new SqlBulkCopyColumnMapping(lstOutcome.Items[i].ToString(), FieldNames[i])
        );
    }
}
于 2009-10-08T18:56:50.787 に答える
0

私はそれを動作させました、このコードをチェックしてくださいamigo's

using (SqlBulkCopy bulkCopy = new SqlBulkCopy(sqlConnectionString, options))
                    {
                        ArrayList myList = new ArrayList();
                        foreach (ListItem li in lstOutcome.Items)
                        {
                            myList.Add(li);
                        }
                        bulkCopy.DestinationTableName = "Customers";
                        //amount to bulkcopy at once to prevent slowing with large imports
                        bulkCopy.BatchSize = 200;
                        SqlBulkCopyColumnMapping map1 = new SqlBulkCopyColumnMapping(myList[0].ToString(), "CustomerID");
                        bulkCopy.ColumnMappings.Add(map1);
                        SqlBulkCopyColumnMapping map2 = new SqlBulkCopyColumnMapping(myList[1].ToString(), "Name");
                        bulkCopy.ColumnMappings.Add(map2);
                        SqlBulkCopyColumnMapping map3 = new SqlBulkCopyColumnMapping(myList[2].ToString(), "Address");
                        bulkCopy.ColumnMappings.Add(map3);
                        SqlBulkCopyColumnMapping map4 = new SqlBulkCopyColumnMapping(myList[3].ToString(), "City");
                        bulkCopy.ColumnMappings.Add(map4);
                        SqlBulkCopyColumnMapping map5 = new SqlBulkCopyColumnMapping(myList[4].ToString(), "State");
                        bulkCopy.ColumnMappings.Add(map5);
                        SqlBulkCopyColumnMapping map6 = new SqlBulkCopyColumnMapping(myList[5].ToString(), "ZipCode");
                        bulkCopy.ColumnMappings.Add(map6);
                        SqlBulkCopyColumnMapping map7 = new SqlBulkCopyColumnMapping(myList[6].ToString(), "Phone");
                        bulkCopy.ColumnMappings.Add(map7);
                        SqlBulkCopyColumnMapping map8 = new SqlBulkCopyColumnMapping(myList[7].ToString(), "Email");
                        bulkCopy.ColumnMappings.Add(map8);
于 2009-10-08T18:41:43.373 に答える