Привязка на стороне клиента telerik radgrid не обновляется после привязки данных - PullRequest
3 голосов
/ 15 августа 2011

Я пытаюсь привязать radgrid, используя API на стороне клиента.

Я вызываю вызов функции 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 ":" Боб Хунг "," ChangedDate ":" 8.08.2011 3:48:31 PM "," Description ":" "," State ":" Not Done "," Title ":" Блок MARS Испытания " "WorkEstimate": "50", "WorkRemaining": "50"}, { " _type": "SBIRevision: # Meta.Scrum", "AssignedTo":" Роджер Ng "," ChangedBy ":" Roger Ng "," ChangedDate ":" 08.08.2011 5:12:46 PM "," Description ":" "," State ":" В процессе "," Заголовок ":" Блок MARS Испытания " "WorkEstimate": "50", "WorkRemaining": "50"}, { "_ Тип": "SBIRevision: # Meta.Scrum", "AssignedTo":" Роджер Ng "," ChangedBy ":" Roger Ng "," ChangedDate ":" 08.08.2011 5:13:39 PM "," Description ":" "," State ":" В процессе "," Заголовок ":" Блок MARS Испытания " "WorkEstimate": "50", "WorkRemaining": "50"}, { " _type": "SBIRevision: # Meta.Scrum", "AssignedTo":" Роджер Ng "," ChangedBy ":" Roger Ng "," ChangedDate ":" 08.08.2011 5:14:25 PM "," Description ":" Наткнулся ... указывает на неправильную сборку служба "," Состояние ":" В процессе "," Заголовок ":" Единица МАРС " Испытания " "WorkEstimate": "50", "WorkRemaining": "50"}, { "_ Тип": "SBIRevision: # Meta.Scrum", "AssignedTo":" Роджер Ng "," ChangedBy ":" Боб Хунг "," ChangedDate ":" 10.08.2011 10:59:09 AM "," Description ":" Наткнулся ... указывает на неправильную сборку служба "," Состояние ":" В процессе "," Заголовок ":" Единица МАРС " Испытания " "WorkEstimate": "50", "WorkRemaining": "50"}, { " _type": "SBIRevision: # Meta.Scrum", "AssignedTo":" Роджер Ng "," ChangedBy ":" Roger Ng "," ChangedDate ":" 11.08.2011 12:04:09 PM "," Description ":" Наткнулся ... указывает на неправильную сборку service "," State ":" Done "," Title ":" Блок MARS Испытания», "WorkEstimate": "50", "WorkRemaining": "50"}]}

Вот как я могу объявить свою радгрид на странице aspx

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

Как ни странно, после того, как данные возвращены и связаны, шаблон без записей появляется.

Ответы [ 2 ]

5 голосов
/ 16 августа 2011

Измените свою функцию updateGrid следующим образом (используйте для связывания result.d):

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

Надеюсь, это поможет.

3 голосов
/ 16 августа 2011

При связывании с set_dataSource() необходимо передать фактический массив объектов данных.Получаемый вами результат jQuery содержит массив данных в поле с именем .d.Вот почему вам нужно использовать result.d.

В дополнение к этому, знаете ли вы, что RadGrid может автоматически связываться с веб-службами WCF?Обратитесь к демонстрации привязки данных на стороне клиента .NET 3.5 RadGrid для примера.Сервисные настройки указаны прямо в определении RadGrid через разметку.Затем RadGrid автоматически подключается к службе данных, получает результат и привязывает данные.

...