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>

問題のフレキシグリッド 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
});

ボーナスポイントとして、ページングが無効になっている場合でもフッターを表示するにはどうすればよいですか?

更新: flexigrid デモの DOM を調べたところ、返された 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 に答える