wpf下Flexgrid的c1comboBox列模糊查询
版主:您好,麻烦帮看下 wpf下Flexgrid的c1comboBox列模糊查询的问题:
1、Xaml设置flexgrid的列:
<c1:C1FlexGrid.Columns>
<c1:Column Header="姓名" HeaderHorizontalAlignment="Center">
<c1:Column.CellEditingTemplate>
<ItemContainerTemplate>
<c1:C1ComboBox IsEditable="True" KeyUp="UIElement_OnKeyUp" >
</c1:C1ComboBox>
</ItemContainerTemplate>
</c1:Column.CellEditingTemplate>
</c1:Column>
<c1:Column Header="代码" HeaderHorizontalAlignment="Center"></c1:Column>
</c1:C1FlexGrid.Columns>
<c1:C1FlexGrid.Rows>
<c1:Row></c1:Row>
<c1:Row></c1:Row>
</c1:C1FlexGrid.Rows>
2、窗体构造函数 Flexgrid绑定datatable:
//C1FlexGrid数据源
DataTable dt = new DataTable();
dt.Columns.Add("Name", Type.GetType("System.String"));
dt.Columns.Add("ComList", Type.GetType("System.Int16"));
DataRow dr = dt.NewRow();
dt.Rows.Add(dr);
dr = dt.NewRow();
dt.Rows.Add(dr);
FlexGrid.ItemsSource = dt.DefaultView;
3、窗体 的loaded事件:
employee = new Dictionary<int, string>();
employee.Add(1, "张三");
employee.Add(2, "张四");
employee.Add(3, "赵五");
employee.Add(4, "赵六");
4、OnKeyUp事件:
private void UIElement_OnKeyUp(object sender, KeyEventArgs e)
{
FlexGrid.StartEditing(true);
var cb = sender as C1ComboBox;
if (cb == null) return;
if (cb.IsDropDownOpen) return;
var name = cb.Text;
var value = from pair in employee where pair.Value.Contains(name) select pair;
if (value.Any())
{
cb.Items.Clear();
foreach (var item in value)
{
cb.Items.Add(item.Value);
}
}
//cb.EditCompleted= true;
//cb.Focus();
FlexGrid.StartEditing(false);
}
5、单元格中输入字符:
但焦点离开单元格内容和查询结果消失,
6、查询结果出现在当前列的所有行,能否只限定在当前行?
谢谢!
关于第5步中的焦点离开单元格内容和查询结果消失,应该是你没有给姓名列绑定selectedvalue
如果需要协助调查的话,你还是上传一个完整的demo上来看看
6中的问题没有看懂。是什么意思呢? Richard.Ma:
麻烦您了!
看了你的demo,其实你现在通过模板这种方式,又没有使用wpf的数据绑定的话,combobox和grid之间是没有任何关系的。建议你通过mvvm绑定的方式,给grid绑定数据。然后combobox也绑定到对应的数据项
类似于下图这种方式
好的,谢谢,我试试,有问题请教您。 好的
页:
[1]