如何:将数据集的每个表绑定到GridView上的一个页面
本文关键字:一个 GridView 绑定 数据集 如何 | 更新日期: 2023-09-27 17:49:31
我搜索了又搜索,我认为这应该是相当直接的,但我不能弄清楚。我有一个数据集(myDataSet),我已经添加了几个表(myDataTable)。我还有一个GridView。我想设置GridView,以便GridView上的每个页面都绑定到数据集的每个表(即GridView = DataSet的第1页)。表[0],等等)。这些表都有相同的列,但行数不同。
使用PageSize =表中的行数,即使我显式地将PageButtonCount设置为3(此数据集中有3个表),按钮也会完全消失。我想应该有某种自动分页功能,它决定不再需要更多的页面,但我不知道如何使它工作。
public partial class _Default : System.Web.UI.Page
{
Users theUsers = new Users();
static DataSet myDataSet = new DataSet();
DataTable myDataTable = new DataTable();
protected void Page_Load(object sender, EventArgs e)
{
protected bool runReport()
{
ltError.Visible = false;
try
{
using (MySqlConnection dbConn = new MySqlConnection(ConfigurationManager.ConnectionStrings["AsteriskConn"].ConnectionString))
{
//sql query
string sql = "SELECT calldate, src, dst, duration FROM cdr WHERE (src LIKE @ext AND dst > 9999)" +
"OR (dst LIKE @ext AND src > 9999) AND dst NOT LIKE '*%'";
MySqlDataAdapter adapter = new MySqlDataAdapter();
dbConn.Open();
myDataSet.Tables.Clear();
int j = ddlUsers.SelectedIndex;
//loop through each user in the list and query the database for its cdr records with the sql query string
foreach (int i in theUsers.groups[j].extensions)
{
myDataTable = new DataTable();
adapter.SelectCommand = new MySqlCommand(sql, dbConn);
adapter.SelectCommand.Parameters.Add("@ext", MySqlDbType.VarChar, 80).Value = i;
adapter.Fill(myDataTable);
myDataTable.TableName = i.ToString();
myDataSet.Tables.Add(myDataTable);
}
gvReport.DataSource = myDataSet;
gvReport.AllowPaging = true;
gvReport.PageSize = myDataSet.Tables[0].Rows.Count;
gvReport.PagerSettings.PageButtonCount = myDataSet.Tables.Count;
gvReport.PagerSettings.Mode = PagerButtons.NumericFirstLast;
gvReport.PagerSettings.Position = PagerPosition.Top;
gvReport.PagerSettings.Visible = true;
gvReport.DataBind();
dbConn.Close();
}
}
}
}
protected void gvReport_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
gvReport.PageIndex = e.NewPageIndex;
gvReport.DataSource = myDataSet.Tables[e.NewPageIndex];
gvReport.DataBind();
}
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
<asp:Panel ID="Panel1" runat="server" HorizontalAlign="Center">
<asp:GridView ID="gvReport" runat="server" OnPageIndexChanging="gvReport_PageIndexChanging"
onrowdatabound="gvReport_RowDataBound" Visible="False" HorizontalAlign="Center" AllowPaging="true">
<PagerSettings Position="Top" />
</asp:GridView>
<asp:Literal ID="ltError" runat="server" Visible="False"></asp:Literal>
</asp:Panel>
</asp:Content>
我认为,你最好添加页面索引按钮/链接按钮,动态(或使用重复器来显示页面索引按钮)