c# - 数据绑定(bind)后 telerik radgrid 的客户端绑定(bind)未更新

标签 c# asp.net data-binding telerik telerik-grid

我正在尝试使用客户端 api 绑定(bind) 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 数据;这是每个 fiddler 的响应内容:

{"d":[{"_type":"SBIRevision:#Meta.Scrum","AssignedTo":"Roger Ng","ChangedBy":"Bob Hung","ChangedDate":"8/8/2011 3:48:31 PM","Description":"","State":"Not Done","Title":"MARS Unit Tests","WorkEstimate":"50","WorkRemaining":"50"},{"_type":"SBIRevision:#Meta.Scrum","AssignedTo":"Roger Ng","ChangedBy":"Roger Ng","ChangedDate":"8/8/2011 5:12:46 PM","Description":"","State":"In Progress","Title":"MARS Unit Tests","WorkEstimate":"50","WorkRemaining":"50"},{"_type":"SBIRevision:#Meta.Scrum","AssignedTo":"Roger Ng","ChangedBy":"Roger Ng","ChangedDate":"8/8/2011 5:13:39 PM","Description":"","State":"In Progress","Title":"MARS Unit Tests","WorkEstimate":"50","WorkRemaining":"50"},{"_type":"SBIRevision:#Meta.Scrum","AssignedTo":"Roger Ng","ChangedBy":"Roger Ng","ChangedDate":"8/8/2011 5:14:25 PM","Description":"Ran into...pointing to the wrong build service","State":"In Progress","Title":"MARS Unit Tests","WorkEstimate":"50","WorkRemaining":"50"},{"_type":"SBIRevision:#Meta.Scrum","AssignedTo":"Roger Ng","ChangedBy":"Bob Hung","ChangedDate":"8/10/2011 10:59:09 AM","Description":"Ran into...pointing to the wrong build service","State":"In Progress","Title":"MARS Unit Tests","WorkEstimate":"50","WorkRemaining":"50"},{"_type":"SBIRevision:#Meta.Scrum","AssignedTo":"Roger Ng","ChangedBy":"Roger Ng","ChangedDate":"8/11/2011 12:04:09 PM","Description":"Ran into...pointing to the wrong build service","State":"Done","Title":"MARS Unit Tests","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>

奇怪的是,返回数据并绑定(bind)后,出现无记录模板。

最佳答案

如下更改您的 updateGrid 函数(使用 result.d 进行绑定(bind)):

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

希望这对您有所帮助。

关于c# - 数据绑定(bind)后 telerik radgrid 的客户端绑定(bind)未更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7069850/

相关文章:

c# - 无需通过电子邮件发送密码即可恢复密码

c# - PortalModuleBase 的 DotNetNuke 替代品

c# - DataBinding 与 entityframework 错误

c# - 从不同程序集加载合并的 ResourceDictionary 失败

c# - 动态调用类方法

c# - 为什么我不能在 HTTP 响应 header 中设置 'Allow'?

android - 读取 build/intermediates/data-binding-compiler/debug/dependent-lib-artifacts 目录的内容时出错

c# - 为 whatsapp API 使用密码生成软件时为我的号码生成密码时出错

c# - 在转发器中找不到链接按钮

c# - WPF ListView 中的 DateTime 区域特定格式