我正在将数据表绑定到组合框,就像我在下面的代码中所示。
objComboBox.ItemsSource = objDataTableNew.DefaultView;
objComboBox.DisplayMemberPath = objDataTableNew.Columns[0].ToString();
objComboBox.SelectedValuePath = objDataTableNew.Columns[1].ToString();
objComboBox.SelectedIndex = 0;
现在我想添加组合框项目,显示文本为“select”,值为“-1”到列表顶部。 直接我无法添加,因为itemsource与数据表绑定。 我尝试在索引零处向objDataTableNew插入一行。但我有一个问题。从DB获得的第0列数据表是整数列。所以我不能在该列中插入一个字符串值“select”。
我如何实现这一目标?
答案 0 :(得分:0)
使用ObservableCollection绑定objComboBox.ItemsSource,其中集合的内容将是“select”字符串+数据表项。
答案 1 :(得分:0)
在WPF中尝试CompositeCollection。
<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
。
希望这有帮助。
答案 2 :(得分:0)
错误消息非常自我解释。您似乎想要在整数列[0]中插入一个字符串(&#34; select&#34;)。插入整数&#34; -1&#34;在[0](整数列)和字符串&#34;选择&#34;在[1](字符串列)中。假设[1]是一个字符串列。
答案 3 :(得分:0)
这对我有用:
DataRow row = dt.NewRow();
row["Category"] = "<-Please select Category->";
dt.Rows.InsertAt(row, 0);
CBParent.DataSource = dt;
答案 4 :(得分:-1)
首先将数据绑定到datatable并创建新行到数据表
DataRow row = dt.NewRow(); row["Category"] = "<-Please select Category->"; dt.Rows.InsertAt(row, 0); CBParent.DataSource = dt;
答案 5 :(得分:-1)
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;