2017-12-21 16 views
0

のプロパティを読み取ることができません「type」を、私はこの例を実装しようとしています: Dynamic_GridPanelsEXT-NET:キャッチされない例外TypeError:ヌル

しかし、私は外側のグリッドをクリックして展開したときに、私はこのエラーが表示されます。

Uncaught TypeError: Cannot read property 'type' of null

ブレークポイントを使用することで、DirectMethodから戻った後にエラーが発生していることがわかりました。正しく動作しているので、私は外部グリッド(misArtStore)のコードを投稿しません。ここで

は私のコードです:

マークアップ

[DirectMethod] 
     public string GetGrid(Dictionary<string, string> parameters) 
     { 
      string id = parameters["id"]; 
      DALP.PDBDataContext dc = new DALP.PDBDataContext(); 
      DAL.AdminDataContext ds = new DAL.AdminDataContext(); 

      string uname = HttpContext.Current.User.Identity.Name; 

      var clientid = (from u in ds.ClientUsers    
          where u.UserName == uname 
          select u.ClientId); 

      var sites = (from mc in dc.TMFCategories //sites is populated correctly 
         join mat in dc.TMFTemplateCts on mc.Id equals mat.Catid 
         join st in dc.Sites on mat.ctid equals st.CTid 
         where ((!dc.TMFFiles.Any(x=>x.SiteId==st.Siteid)) && mat.Required == true && mat.Clientid == int.Parse(clientid.First().ToString()) && mat.ctid == ctid && mc.Id == Convert.ToInt32(id)) 
         select new { Siteid = st.Siteid, Site = st.FullName }); 


      GridPanel grid = new GridPanel 
      { 
       Height = 200, 
       EnableColumnHide = false, 
       Store = 
      { 
       new Store 
       { 
        Model = { 
         new Model { 
          IDProperty = "Siteid", 
          Fields = 
          { 
           new ModelField("Siteid"), 
           new ModelField("Site") 
          } 
         } 
        }, 
        DataSource = sites 
       } 
      }, 
       ColumnModel = 
       { 
        Columns = 
       { 
        new Column { Text = "Site", DataIndex = "Site", Width = 150 } 
       } 
       } 
      }; 

      return ComponentLoader.ToConfig(grid); 
     } 

クロームコンソールの後ろ

<ext:GridPanel 
            runat="server" 
            Title="Expander Rows with GridPanel" 
            Collapsible="true" 
            AnimCollapse="true" 
            Icon="Table" 
            Width="600" 
            Height="450" 
            DisableSelection="true"> 
            <Store> 
             <ext:Store ID="misArtStore" runat="server"> 
              <Model> 
               <ext:Model runat="server" IDProperty="Id"> 
                <Fields> 
                 <ext:ModelField Name="Id" /> 
                 <ext:ModelField Name="missing" /> 
                </Fields> 
               </ext:Model> 
              </Model> 
             </ext:Store> 
            </Store> 
            <ColumnModel runat="server"> 
             <Columns> 
              <ext:Column runat="server" Text="Artifacts" DataIndex="missing" Flex="1" Hideable="false" /> 
             </Columns> 
            </ColumnModel> 
            <Plugins> 
             <ext:RowExpander runat="server"> 
              <Loader runat="server" DirectMethod="#{DirectMethods}.GetGrid" Mode="Component"> 
               <LoadMask ShowMask="true" /> 
               <Params> 
                <ext:Parameter Name="id" Value="this.record.getId()" Mode="Raw" /> 
               </Params> 
              </Loader> 
             </ext:RowExpander> 
            </Plugins> 
           </ext:GridPanel> 

コード:

Uncaught TypeError: Cannot read property 'type' of null

at F.setLayout (ext.axd:19) 
at F.getLayout (ext.axd:19) 
at F.add (ext.axd:19) 
at g.Ext.ComponentLoader.Renderer.Component (ext.axd:445) 
at g.onComplete (ext.axd:495) 
at Object.complete (ext.axd:463) 
at Object.userSuccess (ext.axd:268) 
at F.executeScriptDelay (ext.axd:256) 
at F.executeScript (ext.axd:255) 
at F.requestSuccessHandler (ext.axd:248) 

EDIT enter image description here

(@Przemekによって提供されるソリューションを使用することによって解決画像におけるエラー)

答えて

1

これは、LINQクエリではなく、グリッドに問題があります。使用してみてください:

DataSource = sites.ToList() 

たり、独自のカスタムオブジェクトのリストを作成します。データベース接続なしの例の作業

public class CustomObject 
{ 
    public string Siteid {get; set; } 
    public string Site {get; set; } 
} 

(...) 

select new CustomObject() { Siteid = st.Siteid, Site = st.FullName }); 

EDIT

を* .aspxの:

<ext:GridPanel runat="server" Title="Expander Rows with GridPanel" 
    Collapsible="true" AnimCollapse="true" Icon="Table" 
    Width="600" Height="450" DisableSelection="true"> 
    <Store> 
     <ext:Store ID="misArtStore" runat="server"> 
      <Model> 
       <ext:Model runat="server" IDProperty="Id"> 
        <Fields> 
         <ext:ModelField Name="Id" /> 
         <ext:ModelField Name="missing" /> 
        </Fields> 
       </ext:Model> 
      </Model> 
     </ext:Store> 
    </Store> 
    <ColumnModel runat="server"> 
     <Columns> 
      <ext:Column runat="server" Text="Artifacts" DataIndex="missing" 
       Flex="1" Hideable="false" /> 
     </Columns> 
    </ColumnModel> 
    <Plugins> 
     <ext:RowExpander runat="server"> 
      <Loader runat="server" DirectMethod="#{DirectMethods}.GetGrid" Mode="Component"> 
       <LoadMask ShowMask="true" /> 
       <Params> 
        <ext:Parameter Name="id" Value="this.record.getId()" Mode="Raw" /> 
       </Params> 
      </Loader> 
     </ext:RowExpander> 
    </Plugins> 
</ext:GridPanel> 

* .aspx.cs:

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (Page.IsPostBack || X.IsAjaxRequest) 
     return; 

    misArtStore.DataSource = new object[] 
    { 
     new { Id = "1", missing = "missing 1" }, 
     new { Id = "2", missing = "missing 2" }, 
     new { Id = "3", missing = "missing 3" } 
    }; 

    misArtStore.DataBind(); 
} 

[DirectMethod] 
public string GetGrid(Dictionary<string, string> parameters) 
{ 
    GridPanel grid = new GridPanel 
    { 
     Height = 200, 
     EnableColumnHide = false, 
     Store = 
     { 
      new Store 
      { 
       Model = 
       { 
        new Model 
        { 
         IDProperty = "Siteid", 
         Fields = { new ModelField("Siteid"), new ModelField("Site") } 
        } 
       }, 
       DataSource = new object[] 
       { 
        new { Siteid = "1", Site = "Site 1" }, 
        new { Siteid = "2", Site = "Site 2" } 
       } 
      } 
     }, 
     ColumnModel = 
     { 
      Columns = { new Column { Text = "Site", DataIndex = "Site", Width = 150 } } 
     } 
    }; 

    return ComponentLoader.ToConfig(grid); 
} 
+0

ありがとうございました!私は画像のエラーを解決しましたが、私はまだjavascriptエラーを受け取ります。 'Uncaught TypeError:ヌルのプロパティ 'type'を読み取ることができません。 ' – aggicd

+0

この 'プロパティ'タイプの 'null'はあなたのグリッドの問題とは関係ありません。私は最初の答えに働く解決策を加えました。 – Przemek

+0

しかし、私はいつrowexpanderを拡張しようとするのか?私はあなたの解決策を試みたが、同じエラーが残っている。だから、おそらくそれは 'datasource'とは関係ありません。 – aggicd

関連する問題