C # Datagridview: значение ячейки комбинированного столбца равно нулю даже после того, как пользователь выбирает элемент - PullRequest
0 голосов
/ 20 мая 2011

Я создаю графический интерфейс, который позволяет пользователю манипулировать данными XML. Полезный сотрудник по имени Питер смог указать мне направление, которое заставило меня задаться вопросом, почему значения моих ячеек были нулевыми, даже когда пользователь выбирает значение в поле со списком.

Я прочитал несколько вещей: элемент значения comboboxcolumn, элемент отображения, источник данных и имя свойства данных. Я выяснил, что делают элементы display и value, но решил придерживаться источника данных, чтобы мне не пришлось указывать элемент display и value; Я считаю, что это упростило задачу, и, кроме того, варианты в выпадающем списке хранятся в строковом массиве.

Суть в том, что пользователь вводит варианты в расширенное текстовое поле. Затем текстовое поле читается построчно, и каждая строка становится выбором в поле со списком. Затем я создаю новый столбец со списком в представлении данных, и пользователю доступны варианты выбора. После того, как пользователь закончил, у меня есть кнопка «Сохранить с комбинированным столбцом ...», которая создает новый столбец данных в таблице данных, которую отображает сетка данных, и я пытаюсь скопировать значения через этот код: (так как я не могу напрямую объединить поле со списком со списком данных)

            int size = dataGridView1.Rows.Count - 1;
            DataColumn column = new DataColumn(combo.HeaderText);
            data_set_array[(int)IndexNumber.Value].Tables[(int)TableNumber.Value].Columns.Add(column);
            for (q = 0; q < size; q++)
            {
                data_set_array[(int)IndexNumber.Value].Tables[(int)TableNumber.Value].Rows[q][combo.HeaderText] = dataGridView1["combo", q].Value;
            }

когда все это сказано и сделано, создается новый столбец и отображается сообщение. Однако значения таблицы данных равны нулю, что означает, что значения ячеек также равны нулю. Это означает, что элемент, выбранный пользователем в поле со списком, не был скопирован в значение ячейки. Что я делаю неправильно? Я установил в качестве источника данных строку массивов, где строки - это выбор пользователя для комбинированного списка, и все же, когда я выбрал выбор из комбинированного списка и попытался сохранить его, значения были нулевыми. Я также прочитал, что мне не нужно беспокоиться о значении элемент или элемент отображения, так как установка источника данных предоставит мне действительный отображаемый текст и допустимые значения.

Если вам нужна дополнительная информация, пожалуйста, спросите. Заранее спасибо. .NET 3.5 SP1, Visual Studio 2008 C #.

С уважением,

tf.rz

1 Ответ

1 голос
/ 20 мая 2011

Я не уверен,

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

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

вам нужно разбить эту большую строку кода, чтобы ее было легче отлаживать.

IE при выходецикл имеет значение, которое вы ожидаете?Или присвоение не удалось?Он скажет вам, где что-то идет не так.

Если это назначение, то вы потеряете данные позже, тогда вам нужно расширить поиск (это может произойти, если вы каким-то образом предположили, что тип значения является ссылочным типом дляэкземпляр)

вы можете решить, что вам нужно создать новую таблицу данных с правильными определениями столбцов, а затем скопировать старые данные в новые ... но сначала вам нужно установить, где они терпят неудачу - выв настоящее время выполняется слишком много в 1 строке кода.

Вы уверены, что значение, которое вы получаете из поля со списком, не равно нулю?

...