2013-07-03 32 views
0

我正在使用One Service填充Combobox存儲值使用Ajax請求自動顯示使用以下代碼的匹配文本(篩選)組合框不顯示「DisplayText」,而不是它在Ext.net中顯示「值」

<ext:ComboBox ID="cbManager" runat="server" DisplayField="FirstName" 
         LabelAlign="Right" ValueField="EmployeeID" AllowBlank="false" 
               HideTrigger="true" MinChars="1" FieldLabel="* Manager" > 
       <ext:Store ID="storeManager" runat="server" AutoLoad="false"> 
        <Proxy> 
        <ext:AjaxProxy Url="~/Modules/eHRMS/FilterEmployeeNames.ashx?empType=1"> 
        <ActionMethods Read="GET" /> 
         <Reader> 
        <ext:JsonReader Root="employees" TotalProperty="total" /> 
         </Reader> 
        </ext:AjaxProxy> 
        </Proxy> 
        <Model> 
        <ext:Model ID="Model4" runat="server"> 
        <Fields> 
        <ext:ModelField Name="EmployeeID" /> 
        <ext:ModelField Name="FirstName" /> 
        </Fields> 
        </ext:Model> 
        </Model> 
       </ext:Store> 
       </Store> 
     </ext:ComboBox> 

當我從下拉框中選擇任何名字,它是否給出正確 值,但是當我試圖填補使用它的代碼 只顯示僱員(值)不顯示EmplyeeName

組合框的值

我已經使用了f在CodeBehind中輸入代碼

Employee emp = GetProject(EmployeeID); cbManager.SetValue(project.ManagerID);

I have also tried the following one also 
cbManager.Select(project.ManagerID.ToString()); 

,但只顯示int值,而不是字符串(即EmployeeName)

有什麼能爲這種現象的原因,請給我建議的 正確的方式。

謝謝

回答

1

您應該添加對應於該值的記錄,然後設定值:

<%@ Page Language="C#" %> 

<%@ Register Assembly="Ext.Net" Namespace="Ext.Net" TagPrefix="ext" %> 

<script runat="server"> 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!X.IsAjaxRequest) 
     { 
      Store store = this.ComboBox1.GetStore(); 
      store.Data = new object[] 
      { 
       new 
       { 
        value = "2", 
        text = "Item 2" 
       } 
      }; 
     } 
    } 

    protected void Store_OnReadData(object sender, StoreReadDataEventArgs e) 
    { 
     Store store = sender as Store; 
     store.DataSource = new object[] 
     { 
      new { value = "1", text = "Item 1" }, 
      new { value = "2", text = "Item 2" }, 
      new { value = "3", text = "Item 3" } 
     }; 
     store.DataBind(); 
    } 

    protected void ButtonClick(object sender, DirectEventArgs e) 
    { 
     ComboBox1.GetStore().Add(new object[] 
     { 
      new 
      { 
       value = "4", 
       text = "Item 4" 
      } 
     }); 
     ComboBox1.SetValue("4"); 
    } 
</script> 

<!DOCTYPE html> 

<html> 
<head runat="server"> 
    <title>Ext.NET v2 Example</title> 
</head> 
<body> 
    <form runat="server"> 
     <ext:ResourceManager runat="server" /> 
     <ext:ComboBox 
      ID="ComboBox1" 
      runat="server" 
      DisplayField="text" 
      ValueField="value"> 
      <Store> 
       <ext:Store runat="server" OnReadData="Store_OnReadData"> 
        <Model> 
         <ext:Model runat="server"> 
          <Fields> 
           <ext:ModelField Name="value" /> 
           <ext:ModelField Name="text" /> 
          </Fields> 
         </ext:Model> 
        </Model> 
        <Proxy> 
         <ext:PageProxy> 
          <Reader> 
           <ext:JsonReader /> 
          </Reader> 
         </ext:PageProxy> 
        </Proxy> 
       </ext:Store> 
      </Store> 
      <SelectedItems> 
       <ext:ListItem Index="0" /> 
      </SelectedItems> 
     </ext:ComboBox> 

     <ext:Button runat="server" Text="Set some value"> 
      <DirectEvents> 
       <Click OnEvent="ButtonClick"></Click> 
      </DirectEvents> 
     </ext:Button> 
    </form> 
</body> 
</html> 
+0

這裏正如我在Questioin提到我使用處理程序服務,使我綁定通過這一點,我應該強制必須通過添加項目列表直接綁定數據,正如你所說的? –

+0

在這裏,我們有超過500條記錄要顯示,如果我用戶頁面代理它會顯示所有的記錄,也過濾是不可能的,以便我使用服務功能。 –

+0

邏輯應該是一樣的。它並不完全取決於你如何加載你的數據。 如果你仍然有這個問題,你可以提供樣品? – Baidaly

相關問題