|
<SfTreeGrid @ref="_treeGrid" DataSource="@TreeGridData" IdMapping="TaskID" ParentIdMapping="ParentID"
Height="315" TreeColumnIndex="1" AllowPaging="true">
<TreeGridPageSettings PageSizes="@PageSizes" PageCount="5" PageSize="2"></TreeGridPageSettings>
<TreeGridEvents OnActionBegin="ActionBeginHandler" DataBound="OnDataBound"
TValue="SelfReferenceData"></TreeGridEvents>
<TreeGridColumns>
<TreeGridColumn Field="TaskID" HeaderText="Task ID" Width="80" IsPrimaryKey="true"
TextAlign="TextAlign.Right"></TreeGridColumn>
<TreeGridColumn ShowCheckbox Width="120"></TreeGridColumn>
<TreeGridColumn Field="Progress" HeaderText="Progress" Width="100"></TreeGridColumn>
</TreeGridColumns>
</SfTreeGrid>
public Boolean alreadyChecked = false;
public List<int> SelectedNodeIndex = new List<int>();
public async Task OnDataBound(object args)
{
var recs = this._treeGrid.GetCheckedRecords();
var indx = this._treeGrid.GetCheckedRowIndexes();
var currentData = this._treeGrid.GetCurrentViewRecords();
if (recs.Result.Count != 0) // if any record in current view has already been checked
{
foreach (var data1 in currentData)
{
foreach (var check in recs.Result)
{
if (data1.TaskID == check.TaskID) // this is true if the particular page has been visited already
and some records whose progress value are "Open"
{
alreadyChecked = true; // setting alreadyChecked to true so that using this flag
we can prevent checking the already checked checkbox while paging
}
}
}
if (!alreadyChecked) // if the page is not visited already
{
var dataSource = this._treeGrid.GetCurrentViewRecords();
var index = 0;
foreach (var data in dataSource)
{
if (data.Progress == "Open")
{
SelectedNodeIndex.Add(index);
}
index++;
}
}
}
else
{
var dataSource = this._treeGrid.GetCurrentViewRecords();
var index = 0;
foreach (var data in dataSource)
{
if (data.Progress == "Open")
{
SelectedNodeIndex.Add(index);
}
index++;
}
}
if (!alreadyChecked) //using this flag we can prevent checking the already checked checkbox while paging
{
await this._treeGrid.SelectCheckboxes(SelectedNodeIndex);
}
alreadyChecked = false;
}
|
|
public async Task OnDataBound(object args)
{
var recs = this._treeGrid.GetCheckedRecords();
var indx = this._treeGrid.GetCheckedRowIndexes();
var currentData = this._treeGrid.GetCurrentViewRecords();
if (recs.Result.Count != 0) // if any record in current view has already been checked
{
if (currentData.Count > this._treeGrid.PageSettings.PageSize *
this._treeGrid.PageSettings.PageCount)
{ // condition to check if page size is changed. If yes, check the checkboxes of
newly included records of the page (if progress value is "open")
var index2 = 0;
foreach (var data2 in currentData)
{
alreadyChecked2 = false;
foreach (var check2 in recs.Result)
{
if (data2.TaskID == check2.TaskID) // this is true if the particular page
has been visited already and some records whose progress value are "Open"
{
alreadyChecked2 = true;
}
}
if (!alreadyChecked2)
{
if (data2.Progress == "Open")
{
SelectedNodeIndex.Add(index2);
}
}
index2++;
}
alreadyChecked2 = false;
}
-------------
if (!alreadyChecked) //using this flag we can prevent checking the already
checked checkbox while paging
{
await this._treeGrid.SelectCheckboxes(SelectedNodeIndex);
}
alreadyChecked = false;
}
|