0

表格可见,看起来不错,列标题出现,但在“处理中,请稍候...”的瞬间后,状态变为“无项目”。检查 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?

4

2 回答 2

1

根据我在这里和其他几个位置找到的各种信息,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 是由于您之前的问题而生成的,因此这里是这些类的更新版本,它们将产生所需的输出:

<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
于 2013-01-08T22:11:18.320 回答
0

伙计们看看这个 flexiuigrid 的演示

http://flexidemo.ranjitjena.com/

于 2013-01-10T10:29:13.863 回答