private void BuildList()
{
// Define initial variables
int Limit = Int32.Parse(LimitSelect.SelectedItem.ToString());
int Start = (ListPage == 1) ? 0 : (ListPage - 1) * Limit;
string Like = SearchBox.Text.Replace("'", "").Trim();
WhereClause Where = null;
// Build Query
SelectQueryBuilder Query = new SelectQueryBuilder(Driver);
Query.SelectColumns("id", "name", "clantag", "rank", "score", "country", "permban");
Query.SelectFromTable("player");
Query.AddOrderBy(SortedCol.Name, ((SortDir == ListSortDirection.Ascending) ? Sorting.Ascending : Sorting.Descending));
Query.Limit(Limit, Start);
// User entered search
if (!String.IsNullOrWhiteSpace(Like))
Where = Query.AddWhere("name", Comparison.Like, "%" + Like + "%");
// Clear out old junk
DataTable.Rows.Clear();
// Add players to data grid
int RowCount = 0;
foreach (Dictionary<string, object> Row in Driver.QueryReader(Query.BuildCommand()))
{
DataTable.Rows.Add(new object[] {
Image.FromStream(Me.GetManifestResourceStream("BF2Statistics.Resources.rank_" + Row["rank"].ToString() + "icon.gif")),
Row["id"].ToString(),
Row["name"].ToString(),
Row["clantag"].ToString(),
Row["score"].ToString(),
Row["country"].ToString(),
Row["permban"].ToString(),
});
RowCount++;
}
// Get Filtered Rows
Query = new SelectQueryBuilder(Driver);
Query.SelectCount();
Query.SelectFromTable("player");
if (Where != null) Query.AddWhere(Where);
int TotalFilteredRows = Query.ExecuteScalar<int>();
// Get Total Player Count, if the Where clause is null, this will be the same as the Filtered Row Count
int TotalRows = TotalFilteredRows;
if (Where != null)
{
Query = new SelectQueryBuilder(Driver);
Query.SelectCount();
Query.SelectFromTable("player");
TotalRows = Query.ExecuteScalar<int>();
}
// Stop Count
int Stop = (ListPage == 1) ? RowCount : ((ListPage - 1) * Limit) + RowCount;
// First / Previous button
if (ListPage == 1)
{
FirstBtn.Enabled = false;
PreviousBtn.Enabled = false;
}
else
{
FirstBtn.Enabled = true;
PreviousBtn.Enabled = true;
}
// Next / Last Button
LastBtn.Enabled = false;
NextBtn.Enabled = false;
// Get total number of pages
if (TotalFilteredRows / (ListPage * Limit) > 0)
{
float total = float.Parse(TotalFilteredRows.ToString()) / float.Parse(Limit.ToString());
TotalPages = Int32.Parse(Math.Floor(total).ToString());
if (TotalFilteredRows % Limit != 0)
TotalPages++;
LastBtn.Enabled = true;
NextBtn.Enabled = true;
}
// Set page number
PageNumber.Maximum = TotalPages;
PageNumber.Value = ListPage;
// Update Row Count Information
RowCountDesc.Text = String.Format(
"Showing {0} to {1} of {2} player{3}",
++Start,
Stop,
TotalFilteredRows,
((TotalFilteredRows > 1) ? "s " : " ")
);
// Add Total row count
if (!String.IsNullOrWhiteSpace(Like))
RowCountDesc.Text += String.Format("(filtered from " + TotalRows + " total player{0})", ((TotalRows > 1) ? "s" : ""));
// Update
DataTable.Update();
}