2013-07-03 31 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

相关问题