10

みなさんこんにちは

ObjectDataSouce の行数を取得するにはどうすればよいですか?

私は ObjectDataSource と DataList を使用します。ObjectDataSource によって返される特定の行がある場合、たとえばラベルでユーザーに何かを表示したい。状況の 1 つは、レコードがない場合です。

ありがとうございました 。

4

7 に答える 7

8

私は同じ答えを探していました...私が最終的に使用した別の解決策は次のとおりです。これは、.aspxページの背後にある.vbファイルにあります。データソースの「選択された」イベントを処理します。

Protected Sub ObjectDataSource1_Selected(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.ObjectDataSourceStatusEventArgs) Handles ObjectDataSource1.Selected
    ' Select data for rowcount
    Dim dt As DataTable = e.ReturnValue
    ' Set row count label
    Me.lblCount.Text = dt.Rows.Count.ToString
End Sub
于 2011-06-23T19:24:19.097 に答える
7

にはObjectDataSource、合計行数を直接取得する方法はありません。この理由の 1 つは、行数の合計だけが必要な場合、データ ソースはまったく必要ないということです。行数を取得するには、ビジネス ロジック層 (BLL) に話しかけて合計行を取得します。

MyBLL bll = new MyBLL();
int customerRowCount = bll.Customers.GetRowCount();

には、合計行数にアクセスする必要がObjectDataSourceある場合SelectCountMethodなど、データ バインド コントロールに使用できる があります。GridViewただし、これは選択操作の実行中にのみ使用されます。つまり、行数だけを取得する方法はありません。行数は、データ バインド コントロールがページャー コントロールを表示できるようにするためにのみ使用され、それ以外には使用されません。

于 2010-01-02T23:42:09.370 に答える
5

ここでこれを見つけました:

bool bGetSelectCount;
protected void ObjectDataSource1_Selected(object sender, ObjectDataSourceStatusEventArgs e)
{
    if (bGetSelectCount)
        TextBox1.Text = e.ReturnValue.ToString(); 
}

protected void ObjectDataSource1_Selecting(object sender, ObjectDataSourceSelectingEventArgs e)
{
    bGetSelectCount = e.ExecutingSelectCount;
}
于 2012-01-17T22:50:49.530 に答える
0
Protected Sub objItemsList_Selected(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.ObjectDataSourceStatusEventArgs) Handles objItemsList.Selected
    lblMessage.Text = DirectCast(e.ReturnValue, DataTable).Rows.Count & " record(s) found"
End Sub
于 2012-02-12T19:07:26.463 に答える
0

私の場合、ObjectDatasource はデータセットなので、このように objectdatasource_selected イベントで行番号を取得します

e.ReturnValue.tables(0).rows.count.ToString 
于 2014-03-11T08:37:36.390 に答える
0

これは、ページャー テンプレートを使用して非常に簡単に実現できます。

       <asp:DataPager PagedControlID="PagedControlId" PageSize="20" QueryStringField="QueryStringName" ID="InfoPager" runat="server">
           <Fields>
               <asp:TemplatePagerField>
                   <PagerTemplate>
                        Showing results 
                        <%=InfoPager.StartRowIndex + 1 %> 
                        to 
                        <%= (new []{(InfoPager.StartRowIndex + InfoPager.PageSize),InfoPager.TotalRowCount})
                                      .OrderBy(x => x)
                                      .First()%> 
                        of 
                        <%=InfoPager.TotalRowCount %>
                   </PagerTemplate>
               </asp:TemplatePagerField>
           </Fields>
       </asp:DataPager>

これにより、最後のページのチェックを含むテキスト「Results x to y of z」が生成されます。

乾杯、

エド

于 2010-10-15T14:33:04.240 に答える