客户端绑定的teleerik radgrid在数据绑定后没有更新

本文关键字:更新 数据绑定 绑定 teleerik radgrid 客户端 | 更新日期: 2023-09-27 18:05:44

我正在尝试使用客户端api绑定一个radgrid。

我发出一个调用javascript函数DoUpdate(sbiId)

function DoUpdate(sbiId) {
    var input = '{"SbiId":"' + sbiId+ '"}';
    var dataSource;
    $.ajax({ url: "http://localhost/Meta.WebService/DataService.svc/GetData",
        type: "POST",
        contentType: "application/json; charset=utf-8",
        data: input,
        dataType: "json",
        success: function(data) {
            updateGrid(data);
        }
    });
}
function updateGrid(result) {
    var mtv = RadGridSprintBackLogItemDetailsInstance().get_masterTableView();
    mtv.set_dataSource(result);
    mtv.dataBind();
}

ajax调用返回看似正确的JSON数据;以下是每个提琴手的响应内容:

{" d ": [{_ 类型":"SBIRevision: #元。Scrum"、"AssignedTo":"罗杰"ChangedBy":"Bob Hung","ChangedDate":"8/8/2011 3:48:31 .":"点"、"描述"、"状态":"不做"、"标题":"火星单位测试"、"WorkEstimate":"50"、"WorkRemaining ": " 50 "}, {" _type":"SBIRevision: #元。Scrum"、"AssignedTo":"罗杰"ChangedBy":"Roger Ng","ChangedDate":"8/8/2011 5:12:46 ."描述":","状态":"正在进行中","标题":"MARS单位"测试"、"WorkEstimate":"50"、"WorkRemaining ": " 50 "}, {" _ 类型":"SBIRevision: #元。Scrum"、"AssignedTo":"罗杰"ChangedBy":"Roger Ng","ChangedDate":"8/8/2011 5:13:39 ."描述":","状态":"正在进行中","标题":"MARS单位"测试"、"WorkEstimate":"50"、"WorkRemaining ": " 50 "}, {" _type":"SBIRevision: #元。Scrum"、"AssignedTo":"罗杰"ChangedBy":"Roger Ng","ChangedDate":"8/8/2011 5:14:25 .点"、"描述":"跑进…指向错误的构建"状态":"正在进行中","标题":"MARS单位"测试"、"WorkEstimate":"50"、"WorkRemaining ": " 50 "}, {" _ 类型":"SBIRevision: #元。Scrum"、"AssignedTo":"罗杰"ChangedBy":"Bob Hung","ChangedDate":"8/10/2011 10:59:09 "、"描述":"跑进…指向错误的构建"状态":"正在进行中","标题":"MARS单位"测试"、"WorkEstimate":"50"、"WorkRemaining ": " 50 "}, {" _type":"SBIRevision: #元。Scrum"、"AssignedTo":"罗杰"ChangedBy":"Roger Ng","ChangedDate":"8/11/2011 12:04:09 .点"、"描述":"跑进…指向错误的构建服务"、"状态":"做"、"标题":"火星单位测试"、"WorkEstimate":"50"、"WorkRemaining ": " 50 "}]}

下面是我如何在aspx页面上声明我的radgrid

<telerik:RadGrid runat="server" ID="RadGridSprintBackLogItemDetails" EnableViewState="false" EnableEmbeddedSkins="false" Skin="Meta">
    <MasterTableView AutoGenerateColumns="false" EnableNoRecordsTemplate="true" ShowHeadersWhenNoRecords="true">
        <ItemStyle Wrap="false"></ItemStyle>
        <NoRecordsTemplate>
            <div style="margin-left: 5px;">
                Select a Sprint Backlog Item (SBI) from above to view its Revisions</div>
        </NoRecordsTemplate>
        <Columns>
            <telerik:GridBoundColumn DataField="ChangedDate" HeaderText="Changed Date">
            </telerik:GridBoundColumn>
            <telerik:GridBoundColumn DataField="Title" HeaderText="Title">
            </telerik:GridBoundColumn>
            <telerik:GridBoundColumn DataField="Description" HeaderText="Description">
            <ItemStyle Wrap="false"></ItemStyle>
            </telerik:GridBoundColumn>
            <telerik:GridBoundColumn DataField="AssignedTo" HeaderText="Assigned To">
            </telerik:GridBoundColumn>
            <telerik:GridBoundColumn DataField="WorkEstimate" HeaderText="Work Estimate">
            </telerik:GridBoundColumn>
            <telerik:GridBoundColumn DataField="WorkRemaining" HeaderText="Work Remaining">
            </telerik:GridBoundColumn>
            <telerik:GridBoundColumn DataField="State" HeaderText="State">
            </telerik:GridBoundColumn>
            <telerik:GridBoundColumn DataField="ChangedBy" HeaderText="Changed By">
            </telerik:GridBoundColumn>
        </Columns>
    </MasterTableView>
</telerik:RadGrid>

奇怪的是,在数据返回并绑定之后,出现了no records模板。

客户端绑定的teleerik radgrid在数据绑定后没有更新

按如下方式更改updateGrid函数(使用result。D表示绑定):

function updateGrid(result) {
  var mtv = RadGridSprintBackLogItemDetailsInstance().get_masterTableView();
  mtv.set_dataSource(result.d);
  mtv.dataBind(); 
}

希望有帮助。

set_dataSource()绑定时,需要传递实际的数据对象数组。您得到的jQuery结果在一个名为.d的字段中包含数据数组。这就是为什么你需要使用result.d

顺便说一句,你知道RadGrid可以自动绑定到WCF Web服务吗?参考RadGrid的。net 3.5客户端数据绑定演示。服务设置在RadGrid的定义中通过标记指定。然后RadGrid自动连接到数据服务,检索结果和数据索引。