2013-04-22 59 views
0

加載數據我也試圖與一個處理程序ext.net組合框無法從數據庫

在Index.aspx的

<ext:Store ID="Store1" IsPagingStore="true" runat="server"> 

      <Proxy> 
         <ext:AjaxProxy Url="../../Shared/JsonHandler.ashx"> 
          <ActionMethods Read="GET" /> 
          <Reader> 

           <ext:JsonReader Root="names" /> 
          </Reader> 
         </ext:AjaxProxy> 
        </Proxy> 
      <Model> 
      <ext:Model ID="Model1" runat="server"> 
      <Fields> 
      <ext:ModelField Name="name" Type="String" Mapping="nameList" /> 

      </Fields> 
      </ext:Model> 
      </Model> 
      </ext:Store> 
      </Store> 

在JsonHandler.ashx

public void ProcessRequest(HttpContext context) 
    { 
     context.Response.ContentType ="text/json"; 
     var requestParams = new StoreRequestParameters(context); 

     FormExampleController ex=new FormExampleController(); 

     var list = ex.getValue(); 

     context.Response.Write(string.Format("{{'Names':{0}}}",JSON.Serialize(list))); 


    } 
以下code..trying

In FormController

public List<string> getValue() 
    { 
     FormUser user = new FormUser(); 
     user.nameList = new List<string> 
     { 
      "A", 
      "B", 
      "C", 
      "D" 

     }; 
     return user.nameList; 
    } 

這裏的值又傳遞給處理程序,但組合框顯示爲空!!有什麼建議嗎?

+0

你應該改變你的字符串列表列出的對象,你可以發佈什麼'名稱列表的樣本'是。它是一個'列表',或者可能是逗號,分隔,列表,字符串?如果一個'''''''''Array',你需要一個'ArrayReader'。 – 2013-04-22 21:33:56

+0

是的,它是一個字符串列表..我從控制器傳遞它。這裏是代碼public ActionResult Index() FormUser user = new FormUser(); user.nameList =新列表 { 「A」, 「B」, 「C」, 「d」 }; // ViewBag.namelist = user.nameList; return View(user); } – Philomath 2013-04-23 04:03:33

+0

根據您的建議,我嘗試將arrayreader添加到我的store.however但我無法添加字段和外部:Recordfield,它表示字段不支持..在readertag內,我只能添加一個customconfig – Philomath 2013-04-23 04:30:23

回答

0

它似乎將Store綁定到一個簡單的ListArray字符串是不可能的。

以下是一個應該可以工作的測試案例,但不是。我正在調查解決方案,並會盡快發佈更新。

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

<script runat="server"> 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     var store = this.ComboBox1.GetStore(); 

     store.DataSource = new List<string> { "A", "B", "C", "D" }; 
     store.DataBind(); 
    } 
</script> 

<!DOCTYPE html> 

<html> 
<head runat="server"> 
    <title>Ext.NET Example</title> 
</head> 
<body> 
<form runat="server"> 
    <ext:ResourceManager runat="server" /> 

    <ext:ComboBox ID="ComboBox1" runat="server" DisplayField="name"> 
     <Store> 
      <ext:Store runat="server"> 
       <Model> 
        <ext:Model runat="server"> 
         <Fields> 
          <ext:ModelField Name="name" /> 
         </Fields> 
        </ext:Model> 
       </Model> 
      </ext:Store> 
     </Store> 
    </ext:ComboBox> 
</form> 
</body> 
</html> 

下面的示例結合到簡單List<object>,雖然顯然這不是原來的問題的解決方案,但我在這裏作爲一個可能的臨時解決。

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

<script runat="server"> 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     var store = this.ComboBox1.GetStore(); 

     store.DataSource = new List<object> { 
      new { name = "A" }, 
      new { name = "B" }, 
      new { name = "C" }, 
      new { name = "D" } 
     }; 

     store.DataBind(); 
    } 
</script> 

<!DOCTYPE html> 

<html> 
<head runat="server"> 
    <title>Ext.NET Example</title> 
</head> 
<body> 
<form runat="server"> 
    <ext:ResourceManager runat="server" /> 

    <ext:ComboBox ID="ComboBox1" runat="server" DisplayField="name"> 
     <Store> 
      <ext:Store runat="server"> 
       <Model> 
        <ext:Model runat="server"> 
         <Fields> 
          <ext:ModelField Name="name" /> 
         </Fields> 
        </ext:Model> 
       </Model> 
      </ext:Store> 
     </Store> 
    </ext:ComboBox> 
</form> 
</body> 
</html> 
+0

謝謝你的答覆..但實際上最終的目標是加載一個從databse列表組合...因此,明確給新的價值像{名稱=「A」}可能無法正常工作... – Philomath 2013-04-23 07:06:52

+0

我做了一些在我的主要問題編輯。 – Philomath 2013-04-23 09:13:45

+0

任何幫助傢伙? – Philomath 2013-04-25 04:19:13

0

是,例如平紋結構不被存儲的支持。商店預計對象的集合(對象應包含被定義爲模型字段屬性)像

(new List<string>{"a", "b", "s"}).Select(s => new {FieldName = s})