Добавление предметов в источник со списком - PullRequest
0 голосов
/ 28 декабря 2011

Я связываю таблицу данных со списком, как показано в коде ниже.

        objComboBox.ItemsSource = objDataTableNew.DefaultView;
        objComboBox.DisplayMemberPath = objDataTableNew.Columns[0].ToString();
        objComboBox.SelectedValuePath = objDataTableNew.Columns[1].ToString();
        objComboBox.SelectedIndex = 0;

Теперь я хочу добавить элемент комбинированного списка с отображаемым текстом «select» и значением «-1» в начало списка Непосредственно я не могу добавить, так как itemsource связан с таблицей данных. Я попытался вставить строку в objDataTableNew с нулевым индексом. но у меня есть проблема. 0-й столбец данных, полученный из БД, является целочисленным столбцом. Поэтому я не могу вставить строковое значение "select" в этот столбец.

Как мне этого добиться?

Ответы [ 6 ]

0 голосов
/ 12 июля 2017

Это сработало для меня:

DataRow row = dt.NewRow(); 
row["Category"] = "<-Please select Category->"; 
dt.Rows.InsertAt(row, 0); 
CBParent.DataSource = dt;
0 голосов
/ 02 января 2012
            List<KeyValuePair<string, string>> list = new List<KeyValuePair<string, string>>(objDataTable.Rows.Cast<DataRow>().Select(row => new KeyValuePair<string, string>(row[DisplayMemberColumn].ToString(), row[SelectedValueColumn].ToString())));
            list.Insert(0, new KeyValuePair<string, string>("<--Select-->", "-1"));
            objComboBox.ItemsSource = list;
            objComboBox.DisplayMemberPath = "Key";
            objComboBox.SelectedValuePath = "Value";
            objComboBox.SelectedIndex = 0;
0 голосов
/ 28 декабря 2011

Сообщение об ошибке довольно очевидно. Похоже, вы пытаетесь вставить строку («select») в целочисленный столбец [0]. Вставьте целое число «-1» в [0] (столбец целых) и строку «выбрать» в [1] (столбец строки). Предполагая, что [1] является строковым столбцом.

0 голосов
/ 28 декабря 2011

Прежде всего связать данные с датируемыми и создать новую строку с датированными

DataRow row = dt.NewRow(); row["Category"] = "<-Please select Category->"; dt.Rows.InsertAt(row, 0); CBParent.DataSource = dt; 
0 голосов
/ 28 декабря 2011

Попробуйте CompositeCollection в WPF.

  <ListBox xmlns:System="clr-namespace:System;assembly=mscorlib"
    xmlns:Collections="clr-namespace:System.Collections;assembly=mscorlib">
        <ListBox.Resources>
            <Collections:ArrayList x:Key="TestCollection">
                <System:String>1</System:String>
                <System:String>2</System:String>
                <System:String>3</System:String>
                <System:String>4</System:String>
            </Collections:ArrayList>
        </ListBox.Resources>
        <ListBox.ItemsSource>
            <CompositeCollection>
                <System:String>--Select--</System:String>
                <CollectionContainer
                    Collection="{StaticResource TestCollection}"/>
            </CompositeCollection>
        </ListBox.ItemsSource>
    </ListBox>

Так что вместо StaticResource вы также можете поставить Binding из вашей модели просмотра.

Надеждаэто помогает.

0 голосов
/ 28 декабря 2011

Свяжите objComboBox.ItemsSource с ObservableCollection, где содержимое коллекции будет «выбирать» строку + элементы таблицы данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...