大家好,
如何获取ObjectDataSouce的行数?
我使用ObjectDataSource和DataList。我希望在ObjectDataSource返回某些行时向用户显示一些东西,例如在标签中。其中一种情况是没有记录。
谢谢。
答案 0 :(得分:7)
ObjectDataSource
无法直接获取总行数。其中一个原因是如果您想要的只是总行数,那么您根本不需要数据源!要获取行计数,只需与业务逻辑层(BLL)对话并获取总行数:
MyBLL bll = new MyBLL();
int customerRowCount = bll.Customers.GetRowCount();
ObjectDataSource
确实有SelectCountMethod
,当GridView
等数据绑定控件需要访问总行数时,可以使用{{1}}。但是,仅在执行“选择”操作时使用此选项。也就是说,仅无法获得行计数。仅使用行计数,以便数据绑定控件可以显示寻呼机控件 - 它不会用于其他任何内容。
答案 1 :(得分:7)
我正在寻找相同的答案......我最终使用的另一个解决方案如下: 这可以在.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
答案 2 :(得分:4)
找到此here:
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;
}
答案 3 :(得分: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>
这将生成文本“结果x到z的y”,包括检查最后一页。
干杯,
版
答案 4 :(得分: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
答案 5 :(得分:0)
在我的情况下,ObjectDatasource是一个数据集,所以我在objectdatasource_selected事件中得到这样的行号
e.ReturnValue.tables(0).rows.count.ToString
答案 6 :(得分:0)
Protected Sub myODS_Selected(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.ObjectDataSourceStatusEventArgs) Handles myODS.Selected
Dim s As String = e.ReturnValue.ToString
Dim rows As Integer
Int32.TryParse(s, rows)
'rows variable now holds the total number of results, not just what's displayed on the current gridview page
End Sub