2011-05-05 103 views
0

我目前正在創建一個使用telerik控件的Gridview,它顯示來自sql數據庫的數據,我通過wcf ria中使用的域數據源顯示數據(ADO.net實體模型等) 我想在我的radgrid上面添加一個自動填充框,鍵入名稱和其他可匹配的條目也列出。如何將自動填充框綁定到數據庫表列?

當我點擊條目然後radgrid可能會顯示包含該名稱的整個行。

我使用silverlight 4,wcf ria,telerik控件。

請提供xaml和xaml.cs中的示例編碼思想。

我試圖訪問telerik演示,但它們沒有在我的系統上運行。

+0

自動完成Telerik控件還是使用工具包自動完成? – 2011-05-05 14:22:54

+0

他正在使用工具包自動完成功能。 [見這裏](http://stackoverflow.com/questions/5871918/using-autocomplete-box-in-silverlight/5872254#5872254) – 2011-05-05 16:28:21

回答

0

作爲一個例子......假設您有一個客戶列表,您希望在您的自動完成框中顯示他們的名字。此外,您的網格應顯示所有客戶,並且在自動完成框中選擇名稱時,將顯示網格的選定項目。

你需要做的就是綁定RadGridView的SelectedItem屬性AutoCompleteBox的&。我會做的是AutoCompleteBox綁定到一個名爲SelectedName屬性,比如:在「模式=雙向」

<input:AutoCompleteBox ItemsSource="{Binding Names}" SelectedItem="{Binding SelectedName, 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

+0

我需要做一個客戶類,或者我可以使用客戶實體已經在我的數據庫? – iti 2011-05-06 05:12:07

+0

那麼我通常有客戶端模型爲我的每個數據庫表(或更合適的EF實體)構建,所以我可以實現像IEditable和INotify之類的東西。 – 2011-05-06 05:25:16

+0

好吧,我仍然感到困惑,我的代碼給出錯誤 – iti 2011-05-06 05:35:17

相關問題