所以我有一个GridView设置为SqlDataSource。分页已启用,我有一个下拉菜单,可以更改每页显示的行数。我能够在单个页面中显示总行数,但我还想显示总行数。 (像这样:"显示315和#34中的1 - 25;)。
所以,我的问题是:
1)如何获取整个DataSource的总行数? (不只是GridView)我的代码OnSelectedData方法不起作用并返回零。
2)如何让每个页面的数字显示不同?例如,在第二页上,它需要说“"显示26 - 50 of 315"
这是我的代码(C#):
public partial class UserControls_BloombergAllUsersControl : System.Web.UI.UserControl
{
protected void Page_Load(object sender, EventArgs e)
{
}
int gridViewTotalRowCount;
protected void onSelectedData(object sender, SqlDataSourceStatusEventArgs e)
{
gridViewTotalRowCount = e.AffectedRows;
}
protected void GridView1_DataBound(object sender, EventArgs e)
{
int pageRowsCount = GridView1.Rows.Count;
Total1.Text = "Showing 1 - " + pageRowsCount.ToString() + " of " + gridViewTotalRowCount.ToString();
}
private void BindGridView1()
{
try
{
this.GridView1.DataBind();
if (Convert.ToInt32(DropDownList1.SelectedValue) != null)
GridView1.PageSize = Convert.ToInt32(DropDownList1.SelectedValue);
}
catch (Exception ex)
{ throw ex; }
}
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
GridView1.PageIndex = e.NewPageIndex;
BindGridView1();
}
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
BindGridView1();
}
}
如果有人能提供帮助那就太棒了。谢谢!
答案 0 :(得分:6)
您可以将onSelectedData
处理程序中的分页信息设置为 Total1 文本,如下所示
protected void onSelectedData(object sender, SqlDataSourceStatusEventArgs e)
{
int startRowOnPage = (GridView1.PageIndex * GridView1.PageSize) + 1;
int lastRowOnPage = startRowOnPage + GridView1.Rows.Count - 1;
int totalRows = e.AffectedRows;
Total1.Text = "Showing " + startRowOnPage.ToString() +
" - " + lastRowOnPage + " of " + totalRows;
}
所以SQLDataSource应该像这样的样本:
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
OnSelected="onSelectedData"
... >
</asp:SqlDataSource>
您无需为GridView1_DataBound
中的寻呼信息做任何事情。
我的意思是你可以从GridView声明中删除OnDataBound="GridView1_DataBound"
。
<强> EDITED 强>
要设置PageSize
,您应为其设置默认值,例如以下示例:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
if (Convert.ToInt32(DropDownList1.SelectedValue) != null)
GridView1.PageSize = Convert.ToInt32(DropDownList1.SelectedValue);
}
}
答案 1 :(得分:0)
由于您使用的是SqlDataSource,请尝试以下代码:
Protected Sub SqlDataSource1_Selected(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.SqlDataSourceStatusEvent Args) Handles
SqlDataSource1.Selected
Dim cnt As Integer = e.AffectedRows
End Sub