Javascript EXT.NET:“;未捕获类型错误:无法读取属性';数据';“未定义”的定义;将记录添加到存储时
我整个下午都在努力解决这个问题,在网上找不到任何可行的解决方案,所以我们开始吧。我会尽我最大的努力彻底解决我的问题,因为我已经把它的主要元素浓缩了下来(换句话说,我这里的一些代码将是一个简化的示例,为了更好地理解,我将在这里和那里讲述一些故事)。首先,我使用EXT.NETMVC模型,并且在很大程度上使用了标记。下面是我的商店(实际代码): 对这种明显混乱的解释是:loadedActivity.activityProjectHistoryList.Original保存了链接到当前加载活动的所有项目的所有历史信息,在这里,我只选择与其中一个项目相关的信息并加载到存储中 对于gran Final,每当我试图更改此链接的状态(应该在网格中已加载的当前行下添加第二行)时,我都会收到可怕的“未捕获的TypeError:无法读取未定义的属性“data” 以下是我尝试添加新行的方式:Javascript EXT.NET:“;未捕获类型错误:无法读取属性';数据';“未定义”的定义;将记录添加到存储时,javascript,asp.net-mvc,extjs,Javascript,Asp.net Mvc,Extjs,我整个下午都在努力解决这个问题,在网上找不到任何可行的解决方案,所以我们开始吧。我会尽我最大的努力彻底解决我的问题,因为我已经把它的主要元素浓缩了下来(换句话说,我这里的一些代码将是一个简化的示例,为了更好地理解,我将在这里和那里讲述一些故事)。首先,我使用EXT.NETMVC模型,并且在很大程度上使用了标记。下面是我的商店(实际代码): 对这种明显混乱的解释是:loadedActivity.activityProjectHistoryList.Original保存了链接到当前加载活动的所有项目
var addNewHistoryRecord= function() {
if (selectedLineIndex> -1) {
var record= storeProjects.getAt(selectedLineIndex).data;
var recordHistory= {
idActivity: 0, //Server-side handles it
idProject: record.idProject,
nmProject: record.nmProject,
dsDetails: dsDetailsField.getValue(),
csStatus: csStatusField.getValue(),
dtDate: dtDateField.getValue()
}
storeActivityProjectHistory.addRecord(recordHistory); // <--RIGHT HERE!
}
}
var addNewHistoryRecord=function(){
如果(selectedLineIndex>-1){
var record=storeProjects.getAt(selectedLineIndex).data;
var记录历史={
idActivity:0,//由服务器端处理
idProject:record.idProject,
nmProject:record.nmProject,
dsDetails:dsDetailsField.getValue(),
csStatus:csStatusField.getValue(),
dtDate:dtDateField.getValue()
}
storeActivityProjectHistory.addRecord(recordHistory);//好的,我找到了答案。感谢Reimius让我不再懒惰并真正关注文档。通用对象无法与store.add()一起使用,需要Ext.data.Record的子类实例
为了做到这一点,以下是我遵循的简洁模板,并在不到10分钟的时间内解决了我的问题:
尽管文档本身说store.add接受Ext.data.Record[],但在我以正确的方式创建对象(即recordHistory)之后,我没有使用它,仅仅是
storeActivityProjectHistory.add(recordHistory)成功了。我认为当您要向存储添加记录时,应该调用store.add()
。我已将store.addRecord更改为store.add,现在它在同一点上返回以下错误:未捕获类型错误:对象#对象没有方法“连接”有什么想法吗?
<ext:GridPanel ID="grdActivityProjectHistory" runat="server" StripeRows="true" Title='<%# Html.GetText("History") %>' Width="621" AutoHeight="true"
StoreID="storeActivityProjectHistory">
<ColumnModel>
<Columns>
<ext:Column ColumnID="idActivity" DataIndex="idActivity" Hidden="true" />
<ext:Column ColumnID="idProject" DataIndex="idProject" Hidden="true" />
<ext:Column ColumnID="nmProject" Header="Project" DataIndex="nmProject" Width="250" />
<ext:Column ColumnID="dsDetails" DataIndex="dsDetails" Hidden="true" />
<ext:Column ColumnID="csStatus" Header="Status" DataIndex="csStatus" Width="75" />
<ext:DateColumn ColumnID="dtDate" Header="Date" DataIndex="dtDate" Width="75" Format="MM/yyyy" />
</Columns>
</ColumnModel>
</ext:GridPanel>
var fillActivityProjectStore = function(projectId) {
var activityProjectHistoryList;
currentProjectHistoryList = new Array();
if (loadedActivity.activityProjectHistoryList!= null) {
activityProjectHistoryList = loadedActivity.activityProjectHistoryList.Original;
activityProjectHistoryList.forEach(function(activityProjectHistory) {
if (activityProjectHistory.cdProject == projectId)
currentProjectHistoryList.push(activityProjectHistory);
});
storeActivityProjectHistory.loadData(currentProjectHistoryList);
}
}
var addNewHistoryRecord= function() {
if (selectedLineIndex> -1) {
var record= storeProjects.getAt(selectedLineIndex).data;
var recordHistory= {
idActivity: 0, //Server-side handles it
idProject: record.idProject,
nmProject: record.nmProject,
dsDetails: dsDetailsField.getValue(),
csStatus: csStatusField.getValue(),
dtDate: dtDateField.getValue()
}
storeActivityProjectHistory.addRecord(recordHistory); // <--RIGHT HERE!
}
}