表格可见,看起来很好,列标题显示,但经过一段时间“处理,请等待......”状态变为“无项目”。检查DOM中的响应显示正在从Web服务正确返回数据,格式如下:
<?xml version="1.0" encoding="utf-8"?>
<MyDataClass xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://tempuri.org/">
<Page>1</Page>
<Rows>
<MyDataRow>
<request_id>13073</request_id>
<status>501</status>
<req_by_user_id>herbjm</req_by_user_id>
</MyDataRow>
...
....
</Rows>
</MyDataClass>
以下是有问题的flexigrid javascript:
$('#report').flexigrid({
url: 'reportdata.asmx/rptPendingServerRequestsFlexi',
dataType: 'xml',
colModel: [
{ display: 'ID', name: 'request_id', width: 40, sortable: true, align: 'center' },
{ display: 'Status', name: 'status', width: 180, sortable: true, align: 'left' },
{ display: 'Requested By', name: 'req_by_user_id', width: 120, sortable: true, align: 'left' }
],
searchitems: [
{ display: 'ID', name: 'request_id' },
{ display: 'Status', name: 'status', isdefault: true },
{ display: 'Requested By', name: 'req_by_user_id' }
],
sortname: "request_id",
sortorder: "desc",
usepager: false,
title: 'Server Requests',
useRp: false,
rp: 30,
showTableToggleBtn: false,
singleSelect: true
});
对于奖励积分,即使分页被禁用,我如何显示页脚?
更新:我检查了DOM的flexigrid演示,这里是他们返回的XML的格式:
<?xml version="1.0" encoding="utf-8"?>
<rows>
<page>1</page>
<total>239</total>
<row id='1'>
<cell>1</cell>
<cell>501</cell>
<cell>Steve</cell>
</row>
<row id='2'>
<cell>2</cell>
<cell>501</cell>
<cell>Fred</cell>
</row>
</rows>
我猜这就是为什么它不起作用?要了解我如何构建回复,请参阅此问题:vb.net return json object with multiple types?
答案 0 :(得分:1)
根据我发现here以及其他几个位置的各种信息,flexigrid要求XML具有特定的格式:
rows - the row definition
page - the current page number
total - the total count of rows in this collection
row - the row, with a unique property called id
cell - each row must contain cells in the order that they are displayed on the grid
由于MyDataClass是由your previous question生成的,因此这些类的更新版本将产生所需的输出:
<XmlType("rows")> _
Public Class MyDataClass
<XmlElement("page")> _
Public Property Page As Integer
<XmlElement("total")> _
Public ReadOnly Property Total As Integer
Get
If Me.Rows IsNot Nothing Then
Return Me.Rows.Count
Else
Return 0
End If
End Get
End Property
<XmlElement("row")> _
Public Property Rows As List(Of MyDataRow)
' Parameterless constructor to support serialization.
Public Sub New()
Me.Rows = New List(Of MyDataRow)
End Sub
Public Sub New(wPage As Integer, ds As DataSet)
Me.New()
Me.Page = wPage
For Each oRow As DataRow In ds.Tables(0).Rows
Dim oMyRow As New MyDataRow
oMyRow.Id = CInt(oRow("id"))
oMyRow.Name = CStr(oRow("Name"))
Me.Rows.Add(oMyRow)
Next
End Sub
End Class
<XmlType("row")> _
Public Class MyDataRow
<XmlAttribute("id")> _
Public Property Id As Integer
Private m_cCells As List(Of MyDataCell)
<XmlIgnore()> _
Public WriteOnly Property Name As String
Set(value As String)
Me.AddCell("Name", value)
End Set
End Property
<XmlElement("cell")> _
Public ReadOnly Property Cells As List(Of MyDataCell)
Get
Return m_cCells
End Get
End Property
' Parameterless constructor to support serialization
Public Sub New()
m_cCells = New List(Of MyDataCell)
End Sub
Public Sub AddCell(sCellName As String, sCellValue As String)
m_cCells.Add(New MyDataCell(sCellName, sCellValue))
End Sub
End Class
Public Class MyDataCell
<XmlIgnore()> _
Public Property Name As String
<XmlText()> _
Public Property Value As String
' Parameterless constructor to support serialization
Public Sub New()
End Sub
Public Sub New(sCellName As String, sCellValue As String)
Me.New()
Me.Name = sCellName
Me.Value = sCellValue
End Sub
End Class
答案 1 :(得分:0)
大家看看flexiuigrid的这个演示