みなさんこんにちは
ObjectDataSouce の行数を取得するにはどうすればよいですか?
私は ObjectDataSource と DataList を使用します。ObjectDataSource によって返される特定の行がある場合、たとえばラベルでユーザーに何かを表示したい。状況の 1 つは、レコードがない場合です。
ありがとうございました 。みなさんこんにちは
ObjectDataSouce の行数を取得するにはどうすればよいですか?
私は ObjectDataSource と DataList を使用します。ObjectDataSource によって返される特定の行がある場合、たとえばラベルでユーザーに何かを表示したい。状況の 1 つは、レコードがない場合です。
ありがとうございました 。私は同じ答えを探していました...私が最終的に使用した別の解決策は次のとおりです。これは、.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
にはObjectDataSource
、合計行数を直接取得する方法はありません。この理由の 1 つは、行数の合計だけが必要な場合、データ ソースはまったく必要ないということです。行数を取得するには、ビジネス ロジック層 (BLL) に話しかけて合計行を取得します。
MyBLL bll = new MyBLL();
int customerRowCount = bll.Customers.GetRowCount();
には、合計行数にアクセスする必要がObjectDataSource
ある場合SelectCountMethod
など、データ バインド コントロールに使用できる があります。GridView
ただし、これは選択操作の実行中にのみ使用されます。つまり、行数だけを取得する方法はありません。行数は、データ バインド コントロールがページャー コントロールを表示できるようにするためにのみ使用され、それ以外には使用されません。
ここでこれを見つけました:
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;
}
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
私の場合、ObjectDatasource はデータセットなので、このように objectdatasource_selected イベントで行番号を取得します
e.ReturnValue.tables(0).rows.count.ToString
これは、ページャー テンプレートを使用して非常に簡単に実現できます。
<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」が生成されます。
乾杯、
エド