Javascript EXT.NET:“;未捕获类型错误:无法读取属性';数据';“未定义”的定义;将记录添加到存储时

Javascript EXT.NET:“;未捕获类型错误:无法读取属性';数据';“未定义”的定义;将记录添加到存储时,javascript,asp.net-mvc,extjs,Javascript,Asp.net Mvc,Extjs,我整个下午都在努力解决这个问题,在网上找不到任何可行的解决方案,所以我们开始吧。我会尽我最大的努力彻底解决我的问题,因为我已经把它的主要元素浓缩了下来(换句话说,我这里的一些代码将是一个简化的示例,为了更好地理解,我将在这里和那里讲述一些故事)。首先,我使用EXT.NETMVC模型,并且在很大程度上使用了标记。下面是我的商店(实际代码): 对这种明显混乱的解释是:loadedActivity.activityProjectHistoryList.Original保存了链接到当前加载活动的所有项目

我整个下午都在努力解决这个问题,在网上找不到任何可行的解决方案,所以我们开始吧。我会尽我最大的努力彻底解决我的问题,因为我已经把它的主要元素浓缩了下来(换句话说,我这里的一些代码将是一个简化的示例,为了更好地理解,我将在这里和那里讲述一些故事)。首先,我使用EXT.NETMVC模型,并且在很大程度上使用了标记。下面是我的商店(实际代码):

对这种明显混乱的解释是:loadedActivity.activityProjectHistoryList.Original保存了链接到当前加载活动的所有项目的所有历史信息,在这里,我只选择与其中一个项目相关的信息并加载到存储中

对于gran Final,每当我试图更改此链接的状态(应该在网格中已加载的当前行下添加第二行)时,我都会收到可怕的“未捕获的TypeError:无法读取未定义的属性“data”

以下是我尝试添加新行的方式:

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