Перебирая все элементы в ListBox? - PullRequest
1 голос
/ 08 октября 2009

У меня есть список, который заполняется этим кодом:

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

В списке lstOutcome я должен быть в состоянии пройти через список и быть в состоянии принять значение первый, второй и т. д., элементы списка.

Причина, по которой мне нужно перебрать каждую строку и взять значение этой строки, так что я могу использовать любое значение в эта строка для заполнения чего-то еще.

Например, в моем списке есть:

  • 1
  • 2
  • 3

Мне нужно иметь возможность циклически проходить через список на кнопке щелкните и получите значения, назначенные для текстовых полей:

  • 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);

Ответы [ 3 ]

1 голос
/ 08 октября 2009

Более эффективный способ написать свой ответ будет выглядеть так:

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])
        );
    }
}
1 голос
/ 08 октября 2009

Вам нужно поместить текстовые поля в массив, например:

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

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

Обратите внимание, что если в списке более трех элементов, произойдет сбой, поскольку в нем не хватает текстовых полей. Для более полного решения, пожалуйста, добавьте некоторый контекст. Для чего нужны текстовые поля? Откуда поступают данные в списке?

0 голосов
/ 08 октября 2009

Я получил его на работу, посмотрите этот код 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);
...