0

私はこの問題を何日も探し続けてきましたが、これまで多くの一般的な方法を試しましたが、まったく何もありませんでした。リストビューは、再バインドすると消えてしまいます。インデックス機能のために、List(Of KeyValuePair(Of String、Integer))をListViewにバインドしています。最初にバインドすると、うまく機能し、DataPagerの必要な制限内のすべてのキーと値のペアが表示されますが、ページャーに目を向けると、リストビューが消えます。

ListViewのPagePropertiesChangingが呼び出されたときに何が起こるかを次に示します。

Me.DataPager1.SetPageProperties(e.StartRowIndex, e.MaximumRows, False)
userInterface.DataPagerReBind(ListView1)

そして実際のListView

<asp:ListView ID="ListView1" runat="server" EnableTheming="True" OnPagePropertiesChanging="ListView1_PagePropertiesChanging">
    <LayoutTemplate>
      <table cellpadding="2" width="640px" border="1" ID="tbl1" runat="server">
        <tr id="Tr2" runat="server" style="background-color: #98FB98">
          <th id="Th1" runat="server">Test point name</th>
          <th id="Th2" runat="server">Number of failed Test points</th>
        </tr>
        <tr runat="server" id="itemPlaceHolder" />
      </table>
    </LayoutTemplate>
    <ItemTemplate>
      <tr id="Tr1" runat="server">
        <td>
          <asp:Label ID="VendorIDLabel" runat="server" Text='<%# Eval("key") %>' />
        </td>
        <td>
          <asp:Label ID="AccountNumberLabel" runat="server" Text='<%# Eval("value") %>' />
        </td>
      </tr>
    </ItemTemplate>
</asp:ListView>
<asp:DataPager ID="DataPager1" runat="server" PageSize="10" PagedControlID="ListView1" >
    <Fields>
        <asp:NextPreviousPagerField
            ButtonType="Link" 
            ShowFirstPageButton="True"
            ShowNextPageButton="False" 
            ShowPreviousPageButton="False" />
        <asp:NumericPagerField />
        <asp:NextPreviousPagerField ButtonType="Button" ShowLastPageButton="True" 
            ShowNextPageButton="False" ShowPreviousPageButton="False" />
    </Fields>
</asp:DataPager>

そして、userInterface.DataPagerRebindは、リストビューを元のリストに再バインドするだけです。誰か助けてもらえますか?私は本当にここで迷子になりました、これは私を非常に長い間悩ませてきました、私がページャーを使うとき、リストビューはただ消えます。ありがとうございました。

userInterface.DataPagerReBindの定義:

Sub DataPagerReBind(ByRef listView1 As ListView)
    listView1.DataSource = TestList
    listView1.DataBind()
End Sub
4

1 に答える 1

1
 protected void DataPager1_PreRender(object sender, EventArgs e)
    {
       //Assign the updated datasource to your listview again
       //Bind the listview.

    }

これはC#コードなので、vb.netでページャーの事前レンダリングイベントを使用してみてください

于 2011-09-26T10:03:15.720 に答える