2017-05-04 9 views
0

ASP.NET 4.0에서 Ext.Net 1.3을 사용하고 있습니다.
동적으로 생성 된 ComboBox 및 Store를 사용하고 싶습니다. 다음 코드는 다음과 같습니다.EXT.NET 동적으로 생성 된 ComboBox 및 Store

var data = new object[] 
     { 
      new object[]{"AL", "Alabama", "The Heart of Dixie"}, 
      new object[] { "AK", "Alaska", "The Land of the Midnight Sun"}, 
      new object[] { "AZ", "Arizona", "The Grand Canyon State"}, 
      new object[] { "AR", "Arkansas", "The Natural State"}, 
      new object[] { "CA", "California", "The Golden State"}, 
      new object[] { "CO", "Colorado", "The Mountain State"}, 
      new object[] { "CT", "Connecticut", "The Constitution State"} 
     }; 
Ext.Net.ComboBox cmb = new Ext.Net.ComboBox(); 
      cmb.TypeAhead = true; 
      cmb.ForceSelection = true; 
      cmb.DisplayField = "ItemCode"; 
      cmb.ValueField = "ItemName"; 
      cmb.MinChars = 1; 
      cmb.ListWidth = 400; 
      cmb.PageSize = 10; 
      cmb.ItemSelector = "tr.list-item"; 
      Store s = new Store(); 
      s.AddField(new RecordField() { Name = "ItemCode", Type = RecordFieldType.String }, 0); 
      s.AddField(new RecordField() { Name = "ItemName", Type = RecordFieldType.String }, 1); 
      s.AddField(new RecordField() { Name = "OnHand", Type = RecordFieldType.String }, 2); 



      s.SaveAllFields = true; 
      s.DataSource = data; 
      s.DataBind(); 
      cmb.Store.Add(s); 


      StringBuilder sHtml = new StringBuilder(); 
      sHtml.Append(" <tpl for=\".\"><tpl if=\"[xindex] == 1\">"); 
      sHtml.Append("<table class=\"cbStates-list\" ><tr>"); 
      sHtml.Append("<th style=\"color: #2f353b !important;\">ItemCode</th>"); 
      sHtml.Append(" <th style=\"color: #2f353b !important;\">ItemName</th>"); 
      sHtml.Append("<th style=\"color: #2f353b !important;\">OnHand</th>"); 
      sHtml.Append("</tr> </tpl>"); 
      sHtml.Append("<tr class=\"list-item\">"); 
      sHtml.Append("<td style=\"padding:3px 0px;\">{ItemCode}</td>"); 
      sHtml.Append("<td>{ItemName}</td>"); 
      sHtml.Append("<td>{OnHand}</td>"); 
      sHtml.Append("</tr> <tpl if=\"[xcount-xindex]==0\">"); 
      sHtml.Append(" </table> </tpl> </tpl>"); 
      cmb.Template.Html = sHtml.ToString(); 
      Panel1.Items.Add(cmb); 

스토어를 바인딩하지 않으면 ComboBox가 페이지에 나타납니다. 저장소가 바인드 된 경우 아무 것도 표시되지 않습니다. 브라우저에서 오류 메시지를 표시합니다. enter image description here 이 문제를 해결하는 방법은 무엇입니까?

답변

0
HttpProxy proxy = new HttpProxy 
       { 
        Method = HttpMethod.POST, 
        Url = "../../../Handlers/BoneWL.ashx" 
       }; 

         // Create Reader 
         Ext.Net.JsonReader reader = new Ext.Net.JsonReader 
         { 
          Root = "plants", 
          TotalProperty = "total", 
          Fields = { 
        new RecordField("ItemCode"), 
        new RecordField("ItemName"), 
        new RecordField("OnHand") 
       } 
         }; 

         // Add Proxy and Reader to Store 
         Store store = new Store 
         { 
          Proxy = { proxy }, 
          Reader = { reader }, 
          AutoLoad = false 
         }; 

         // Create ComboBox 
         Ext.Net.ComboBox cmb = new Ext.Net.ComboBox 
         { 
          DisplayField = "ItemCode", 
          ValueField = "ItemCode", 
          TypeAhead = false, 
          LoadingText = "加载中...", 
          Width = 240, 
          PageSize = 10, 
          HideTrigger = true, 
          ItemSelector = "tr.list-item", 
          MinChars = 1, 
          Store = { store } 
         }; 

         cmb.Listeners.TriggerClick.Handler = "UseDirectEvents('1');WinRowCancelEdit();"; 
         cmb.Triggers.Add(new FieldTrigger() { Icon = TriggerIcon.Search }); 
         cmb.TriggerIcon = TriggerIcon.Search; 
         StringBuilder sHtml = new StringBuilder(); 
         sHtml.Append(" <tpl for=\".\"><tpl if=\"[xindex] == 1\">"); 
         sHtml.Append("<table class=\"cbStates-list\" ><tr>"); 
         sHtml.Append("<th style=\"color: #2f353b !important;\">ItemCode</th>"); 
         sHtml.Append(" <th style=\"color: #2f353b !important;\">ItemName</th>"); 
         sHtml.Append("<th style=\"color: #2f353b !important;\">OnHand</th>"); 
         sHtml.Append("</tr> </tpl>"); 
         sHtml.Append("<tr class=\"list-item\">"); 
         sHtml.Append("<td style=\"padding:3px 0px;\">{ItemCode}</td>"); 
         sHtml.Append("<td>{ItemName}</td>"); 
         sHtml.Append("<td>{OnHand}</td>"); 
         sHtml.Append("</tr> <tpl if=\"[xcount-xindex]==0\">"); 
         sHtml.Append(" </table> </tpl> </tpl>"); 
         cmb.Template.Html = sHtml.ToString(); 
Panel1.Items.Add(cmb); 

Example.portal