我正在尝试使用客户端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:#Meta.Scrum”, “AssignedTo”:“罗杰 Ng“,”ChangedBy“:”Bob Hung“,”ChangedDate“:”8/8/2011 3:48:31 PM“,”“Description”:“”,“State”:“Not Done”,“Title”:“MARS Unit 试验 “ ”WorkEstimate“: ”50“, ”WorkRemaining“: ”50“},{ ” _type“: ”SBIRevision:#Meta.Scrum“, ”AssignedTo“:” 罗杰 Ng“,”ChangedBy“:”Roger Ng“,”ChangedDate“:”8/8/2011 5:12:46 PM“,”“Description”:“”,“State”:“In Progress”,“Title”:“MARS Unit 试验 “ ”WorkEstimate“: ”50“, ”WorkRemaining“: ”50“},{ ”_ 型“: ”SBIRevision:#Meta.Scrum“, ”AssignedTo“:” 罗杰 Ng“,”ChangedBy“:”Roger Ng“,”ChangedDate“:”8/8/2011 5:13:39 PM“,”“Description”:“”,“State”:“In Progress”,“Title”:“MARS Unit 试验 “ ”WorkEstimate“: ”50“, ”WorkRemaining“: ”50“},{ ” _type“: ”SBIRevision:#Meta.Scrum“, ”AssignedTo“:” 罗杰 Ng“,”ChangedBy“:”Roger Ng“,”ChangedDate“:”8/8/2011 5:14:25 PM“,”描述“:”进入......指向错误的构建 服务“,”状态“:”正在进行中“,”标题“:”MARS单位 试验 “ ”WorkEstimate“: ”50“, ”WorkRemaining“: ”50“},{ ”_ 型“: ”SBIRevision:#Meta.Scrum“, ”AssignedTo“:” 罗杰 Ng“,”ChangedBy“:”Bob Hung“,”ChangedDate“:”8/10/2011 10:59:09 AM“,”描述“:”进入......指向错误的构建 服务“,”状态“:”正在进行中“,”标题“:”MARS单位 试验 “ ”WorkEstimate“: ”50“, ”WorkRemaining“: ”50“},{ ” _type“: ”SBIRevision:#Meta.Scrum“, ”AssignedTo“:” 罗杰 Ng“,”ChangedBy“:”Roger Ng“,”ChangedDate“:”8/11/2011 12:04:09 PM“,”描述“:”进入......指向错误的构建 服务“,”状态“:”完成“,”标题“:”MARS单位 试验”, “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>
奇怪的是,在返回并绑定数据后,将显示无记录模板。
答案 0 :(得分:5)
更改updateGrid函数,如下所示(使用result.d进行绑定):
function updateGrid(result) {
var mtv = RadGridSprintBackLogItemDetailsInstance().get_masterTableView();
mtv.set_dataSource(result.d);
mtv.dataBind();
}
希望,这有帮助。
答案 1 :(得分:3)
与set_dataSource()
绑定时,需要传递实际的数据对象数组。您获得的jQuery结果包含名为.d
的字段中的数据数组。这就是您需要使用result.d
。
另外,您是否知道RadGrid可以自动绑定到WCF Web服务?有关实例,请参阅RadGrid's .NET 3.5 Client-Side DataBinding demo。通过标记在RadGrid的定义中指定服务设置。 RadGrid然后自动连接到数据服务,检索结果和数据绑定。