Как привязать поле автозаполнения к столбцу таблицы базы данных? - PullRequest
0 голосов
/ 05 мая 2011

В настоящее время я создаю Gridview с помощью элемента управления telerik, который отображает данные из базы данных sql, которые я отображаю через источник данных домена, используемый в wcf ria. (Модель сущностей ADO.net и т. Д.) Я хочу добавить поле автозаполнения над моей Radgrid, где я ввожу имя и другие подходящие записи также перечислены.

Когда я нажимаю на запись, Radgrid может отображать всю строку, содержащую это имя.

Я использую Silverlight 4, WCF RIA, Telerik Controls.

предоставьте пример идеи кодирования в xaml и xaml.cs.

Я пытаюсь получить доступ к демонстрационным версиям Telerik, но они не работают в моей системе.

1 Ответ

0 голосов
/ 05 мая 2011

В качестве примера ... скажем, у вас есть список клиентов, из которых вы хотите отобразить их имена в поле автозаполнения. Кроме того, ваша таблица должна отображать всех клиентов, и когда в поле «Автозаполнение» выбрано «Имя», отображается элемент «Выбранные» таблицы.

То, что вам нужно сделать, это связать свойство SelectedItem в RadGridView & AutoCompleteBox. Что бы я сделал, это связал AutoCompleteBox со свойством SelectedName, например так:

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

Акцент на Mode = TwoWay - это то, что предупредит ваш код об изменении пользовательского интерфейса.

В своем коде вы должны создать такие свойства:

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

...