开发者

how to bind autocomplete box to a database table column?

开发者 https://www.devze.com 2023-03-03 04:31 出处:网络
i am currently creating a G开发者_C百科ridview using telerik control which displays data from the sql database which i displays through domain datasource used in wcf ria.(ADO.net entity model etc)

i am currently creating a G开发者_C百科ridview using telerik control which displays data from the sql database which i displays through domain datasource used in wcf ria.(ADO.net entity model etc) i want to add an autocomplete box above my radgrid where i type an name and other matchable entries are also listed.

when i click on the entry then radgrid may display whole row containing that name.

i am using silverlight 4,wcf ria,telerik controls.

please provide a sample coding idea in xaml and xaml.cs.

i tries to access telerik demos but they are not running on my system.


As an example... say you have a list of Customers, of which you want to display their names in your AutoComplete box. Further, your Grid should display all customers, and when a Name is selected in the AutoComplete box, the Selected item of the grid displays.

What you need to do is bind the SelectedItem property of the RadGridView & AutoCompleteBox. What I would do is bind the AutoCompleteBox to a property named SelectedName, like so:

<input:AutoCompleteBox ItemsSource="{Binding Names}" SelectedItem="{Binding SelectedName, Mode=TwoWay}" />

Emphasis on the 'Mode=TwoWay' - this is what will alert your code behind that the UI has changed.

In your code behind, you would create properties like this:

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;
        }
    }
}

Notice how, when you're setting the SelectedName, you're using LINQ to determine which of the customers were selected. One pitfall here would be if you have multiple names in a list... this code only selects the first. If this is an issue, you probably should rethink your architecture..

Then for your grid, you would bind the SelectedItem like so:

<telerik:RadGridView 
   ....
   SelectedItem={Binding SelectedCustomer, Mode=TwoWay"}
   ....
</telerik:RadGridView>

In your code behind, you'd create this property:

private Customers selectedCustomer;
public Customers SelectedCustomer 
{
    get { return selectedCustomer; }
    set { 
        selectedCustomer = value;
        MyGridView.SelectedItem = selectedCustomer;
    }
}

Something like that should get you started.

SS

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号