Skip to content

Commit 5eb0c11

Browse files
committedAug 13, 2023
Can set page number to reload easily #153
1 parent 05ac6af commit 5eb0c11

File tree

3 files changed

+69
-25
lines changed

3 files changed

+69
-25
lines changed
 

‎FetchXmlBuilder/AppCode/QueryInfo.cs

+4-1
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,10 @@ public EntityCollection Results
5959
Pages = (int)Math.Ceiling((decimal)result.TotalRecordCount / PageSize);
6060
}
6161
RecordFrom = 1 + (PageNo - 1) * PageSize;
62-
RecordTo = RecordFrom - 1 + result.Entities.Count;
62+
if (result.Entities.Count > 0)
63+
{
64+
RecordTo = RecordFrom - 1 + result.Entities.Count;
65+
}
6366
}
6467
}
6568
}

‎FetchXmlBuilder/DockControls/ResultGrid.Designer.cs

+18-14
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎FetchXmlBuilder/DockControls/ResultGrid.cs

+47-10
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ internal void SetData(QueryInfo queryinfo)
4141
txtPagingCookie.Text = queryinfo.Results.PagingCookie;
4242
if (queryinfo.Query is FetchExpression && !form.settings.Results.RetrieveAllPages && (queryinfo.Results.MoreRecords || queryinfo.PageNo > 1))
4343
{
44-
mnuPage.Text = (queryinfo.PageNo < 10 ? "Page " : "") + queryinfo.PageNo.ToString() + (queryinfo.Pages > 0 ? $"/{queryinfo.Pages}" : "");
44+
SetPageNo();
4545
mnuPageMinus.Enabled = queryinfo.PageNo > 1;
4646
mnuPagePlus.Enabled = queryinfo.Results.MoreRecords;
4747
mnuPage.Visible = true;
@@ -76,6 +76,11 @@ internal void SetData(QueryInfo queryinfo)
7676
}
7777
}
7878

79+
private void SetPageNo()
80+
{
81+
mnuPage.Text = (queryinfo.PageNo < 10 ? "Page " : "") + queryinfo.PageNo.ToString() + (queryinfo.Pages > 0 ? $"/{queryinfo.Pages}" : "");
82+
}
83+
7984
internal void ApplySettingsToGrid()
8085
{
8186
mnuFriendly.Checked = form.settings.Results.Friendly;
@@ -348,23 +353,55 @@ private void mnuPagingCookie_Click(object sender, EventArgs e)
348353
gbPagingCookie.Visible = mnuPagingCookie.Checked;
349354
}
350355

356+
private void RetrievePageNo(int page)
357+
{
358+
if (queryinfo.Query is FetchExpression fetchexpr)
359+
{
360+
var fetchdoc = new XmlDocument();
361+
fetchdoc.LoadXml(fetchexpr.Query);
362+
var fetchnode = fetchdoc.SelectSingleNode("fetch") as XmlElement;
363+
fetchnode.SetAttribute("page", page.ToString());
364+
form.FetchResults(fetchdoc.OuterXml);
365+
}
366+
}
367+
351368
private void mnuPagePlusMinus_Click(object sender, EventArgs e)
352369
{
353370
var direction = sender == mnuPageMinus ? -1 : sender == mnuPagePlus ? 1 : 0;
354-
if (direction != 0 && queryinfo.Query is FetchExpression fetchexpr)
371+
if (direction != 0)
355372
{
356373
mnuPageMinus.Enabled = false;
357374
mnuPagePlus.Enabled = false;
375+
var page = queryinfo.PageNo + direction;
376+
RetrievePageNo(page);
377+
}
378+
}
379+
380+
private void mnuPage_Enter(object sender, EventArgs e)
381+
{
382+
mnuPage.Text = "";
383+
}
358384

359-
//var fetchxml = Fetch.FromString(fetchexpr.Query);
360-
//fetchxml.PageNumber = (fetchxml.PageNumber ?? 1) + direction;
385+
private void mnuPage_Validating(object sender, System.ComponentModel.CancelEventArgs e)
386+
{
387+
e.Cancel = !int.TryParse(mnuPage.Text, out var _);
388+
}
361389

362-
var page = queryinfo.PageNo + direction;
363-
var fetchdoc = new XmlDocument();
364-
fetchdoc.LoadXml(fetchexpr.Query);
365-
var fetchnode = fetchdoc.SelectSingleNode("fetch") as XmlElement;
366-
fetchnode.SetAttribute("page", page.ToString());
367-
form.FetchResults(fetchdoc.OuterXml);
390+
private void mnuPage_Validated(object sender, EventArgs e)
391+
{
392+
if (int.TryParse(mnuPage.Text, out int page) && page != queryinfo.PageNo)
393+
{
394+
RetrievePageNo(page);
395+
}
396+
}
397+
398+
private void mnuPage_KeyPress(object sender, KeyPressEventArgs e)
399+
{
400+
if (e.KeyChar == (char)Keys.Enter || e.KeyChar == (char)Keys.Tab)
401+
{
402+
e.KeyChar = (char)Keys.None;
403+
e.Handled = true;
404+
mnuRecordsNumbers.Focus();
368405
}
369406
}
370407
}

0 commit comments

Comments
 (0)
Please sign in to comment.