gpt4 book ai didi

javascript - 外部网络 : Uncaught TypeError: Cannot read property 'type' of null

转载 作者:行者123 更新时间:2023-12-01 02:35:53 25 4
gpt4 key购买 nike

我正在尝试实现这个例子: Dynamic_GridPanels

但是当我单击展开外部网格时,我收到此错误:

Uncaught TypeError: Cannot read property 'type' of null

通过使用断点,我发现错误是在DirectMethod返回后发生的。我没有发布外部网格 (misArtStore) 的代码,因为它工作正常。

这是我的代码:

标记

<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>

代码隐藏

[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);
}

Chrome 控制台:

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)

编辑 enter image description here

(使用@Przemek提供的解决方案解决了图像错误)

最佳答案

这是 linq 查询的问题,而不是 Grid 的问题。尝试使用:

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 });

编辑

没有数据库连接的工作示例:

*.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);
}

关于javascript - 外部网络 : Uncaught TypeError: Cannot read property 'type' of null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47923177/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com