我目前正在使用telerik控件创建一个Gridview,它显示来自sql数据库的数据,我通过wcf ria中使用的域数据源显示这些数据。(ADO.net实体模型等) 我想在我的radgrid上面添加一个自动完成框,我在其中输入一个名称,并列出其他匹配条目。
当我点击该条目时,radgrid可能会显示包含该名称的整行。
我正在使用silverlight 4,wcf ria,telerik controls。
请在xaml和xaml.cs中提供示例编码构思。
我尝试访问telerik演示,但它们没有在我的系统上运行。
答案 0 :(得分:0)
例如......假设您有一个客户列表,您希望在自动完成框中显示其名称。此外,您的网格应显示所有客户,并且在“自动完成”框中选择“名称”时,将显示网格的“选定”项。
您需要做的是绑定RadGridView&的SelectedItem属性。 AutoCompleteBox。我要做的是将AutoCompleteBox绑定到名为SelectedName的属性,如下所示:
<input:AutoCompleteBox ItemsSource="{Binding Names}" SelectedItem="{Binding SelectedName, Mode=TwoWay}" />
强调'Mode = TwoWay' - 这将提醒你的代码背后的UI已经改变。
在您的代码中,您将创建如下属性:
private string selectedName;
public string SelectedName
{
get { return selectedName; }
set
{
if (value != null)
{
var query = (from c in CustomersList
where (c.Name == value)
select c).FirstOrDefault();
SelectedCustomer = (Customer)query;
selectedName = value;
}
}
}
请注意,当您设置SelectedName时,您正在使用LINQ来确定选择了哪些客户。如果列表中有多个名称,那么这里的一个缺陷就是...这段代码只选择第一个。如果这是一个问题,您可能应该重新考虑您的架构..
然后对于你的网格,你会像这样绑定SelectedItem:
<telerik:RadGridView
....
SelectedItem={Binding SelectedCustomer, Mode=TwoWay"}
....
</telerik:RadGridView>
在您的代码中,您将创建此属性:
private Customers selectedCustomer;
public Customers SelectedCustomer
{
get { return selectedCustomer; }
set {
selectedCustomer = value;
MyGridView.SelectedItem = selectedCustomer;
}
}
这样的事情应该让你开始。
SS