To reproduce:
Use the code snippet below:
static DataSet ds;
public form1()
{
InitializeComponent();
GridviewStyling(radGridView1);
ds = PrepareDataset();
BuildGrid();
//Set_Hierarchy();
for (int i = 0; i < radGridView1.Templates.Count; i++)
GridviewTemplateStyling(radGridView1.Templates[i]);
this.radGridView1.TableElement.PageViewMode = PageViewMode.ExplorerBar;
this.radGridView1.ViewCellFormatting += radGridView1_ViewCellFormatting;
}
void radGridView1_ViewCellFormatting(object sender, CellFormattingEventArgs e)
{
GridDetailViewCellElement detailCell = e.CellElement as GridDetailViewCellElement;
if (detailCell != null)
{
GridViewHierarchyRowInfo hierarchyRow = (GridViewHierarchyRowInfo)((GridViewDetailsRowInfo)detailCell.RowInfo).Owner;
detailCell.PageViewElement.Header.Visibility = Telerik.WinControls.ElementVisibility.Collapsed;
RadPageViewElement el = detailCell.PageViewElement as RadPageViewExplorerBarElement;
if (el != null)
{
for (int i = 0; i < el.Items.Count; i++) // detailCell.PageViewElement.Items.Count
{
RadPageViewItem item = detailCell.PageViewElement.Items[i];
GridViewInfo viewInfo = hierarchyRow.Views[i];
item.MaxSize = new Size(0, 1);
item.Visibility = Telerik.WinControls.ElementVisibility.Hidden;
if (viewInfo.ChildRows.Count != 0)
{
item.Visibility = Telerik.WinControls.ElementVisibility.Collapsed;
}
}
}
}
}
private DataSet PrepareDataset()
{
Random r = new Random();
DataSet ds = new DataSet("DS");
//snir
DataTable dtFirst = new DataTable("Snir");
dtFirst.Columns.Add("pId", typeof(int));
dtFirst.Columns.Add("Col1", typeof(int));
dtFirst.Columns.Add("Col", typeof(string));
dtFirst.Columns.Add("Col3", typeof(int));
dtFirst.Columns.Add("Col4", typeof(string));
for (int i = 0; i < 5; i++)
dtFirst.Rows.Add(1, i, "snirsnirsnir" + r.Next(0, 100).ToString(),
r.Next(0, 35), "snir" + r.Next(0, 100).ToString());
// jenny
DataTable dtSecond = new DataTable("Jenny");
dtSecond.Columns.Add("pId", typeof(int));
dtSecond.Columns.Add("Col1", typeof(int));
dtSecond.Columns.Add("Col2", typeof(string));
dtSecond.Columns.Add("Col3", typeof(int));
dtSecond.Columns.Add("Col4", typeof(string));
dtSecond.Columns.Add("Col5", typeof(string));
dtSecond.Columns.Add("Col6", typeof(string));
for (int i = 0; i < 5; i++)
dtSecond.Rows.Add(2, i, "CnC" + r.Next(0, 100).ToString(),
r.Next(0, 35), "jenny" + r.Next(0, 100).ToString(), "col5", "col6");
//index
DataTable table1 = new DataTable("Index");
table1.Columns.Add("TableId", typeof(int));
table1.Columns.Add("TableName", typeof(string));
table1.Columns.Add("UpdateType", typeof(int));
table1.Rows.Add(1, dtFirst.TableName, r.Next(0, 3));
table1.Rows.Add(2, dtSecond.TableName, r.Next(0, 3));
ds.Tables.AddRange(new DataTable[] { table1, dtFirst, dtSecond });
return ds;
}
private void BuildGrid()
{
// bind the master template
this.radGridView1.DataSource = ds;
this.radGridView1.DataMember = "Index";
//templates
GridViewTemplate template1 = new GridViewTemplate();
template1.DataSource = ds.Tables[1];
template1.Columns[0].IsVisible = false;
template1.EnableHierarchyFiltering = false;
template1.ShowGroupedColumns = false;
radGridView1.Templates.Add(template1);
GridViewTemplate template2 = new GridViewTemplate();
template2.DataSource = ds.Tables[2]; // 1:snir // 2:jenny
radGridView1.Templates.Add(template2);
template1.AllowDragToGroup = false;
//relations
GridViewRelation relation1 = new GridViewRelation(radGridView1.MasterTemplate);//, template2);
relation1.RelationName = "myRelation1";
relation1.ChildTemplate = radGridView1.Templates[0];
relation1.ChildColumnNames.AddRange(new string[] { "pId" });
relation1.ParentColumnNames.Add("TableId");
radGridView1.Relations.Add(relation1);
GridViewRelation relation2 = new GridViewRelation(radGridView1.MasterTemplate);//, template2);
relation2.RelationName = "myRelation2";
relation2.ChildTemplate = radGridView1.Templates[1];
relation2.ChildColumnNames.AddRange(new string[] { "pId" });
relation2.ParentColumnNames.Add("TableId");
radGridView1.Relations.Add(relation2);
}
private void GridviewStyling(RadGridView rgv)
{
//radGridView1 styling
rgv.AllowAddNewRow = false;
rgv.EnableGrouping = false;
rgv.AllowDragToGroup = false;
rgv.AllowDrop = false;
rgv.AllowEditRow = false;
rgv.AllowDrop = false;
rgv.AllowRowResize = false;
rgv.AllowColumnResize = false;
rgv.AutoExpandGroups = true;
rgv.AutoSizeColumnsMode = Telerik.WinControls.UI.GridViewAutoSizeColumnsMode.Fill;
rgv.EnableCustomGrouping = false;
rgv.ShowColumnHeaders = true;
rgv.ShowRowHeaderColumn = false;
rgv.ShowGroupPanel = false;
}
private void GridviewTemplateStyling(GridViewTemplate gvt)
{
//template styling
gvt.AllowAddNewRow = false;
gvt.Columns[0].IsVisible = false;
gvt.ShowChildViewCaptions = false;
gvt.AllowDragToGroup = false;
gvt.AllowRowResize = false;
gvt.AllowColumnResize = false;
gvt.AutoExpandGroups = true;
gvt.AutoSizeColumnsMode = Telerik.WinControls.UI.GridViewAutoSizeColumnsMode.Fill;
gvt.ShowRowHeaderColumn = false;
gvt.ShowColumnHeaders = true;
}
private string GetEnumString(int n)
{
switch (n)
{
case (int)TableUpdateModeEnum.INSERT:
return "INSERT";
case (int)TableUpdateModeEnum.UPDATE:
return "UPDATE";
case (int)TableUpdateModeEnum.UPDATE_OR_INSERT:
return "UPDATE/DELETE";
case (int)TableUpdateModeEnum.DELETE_OR_INSERT:
return "INSERT/DELETE";
default:
return "";
}
}
public enum TableUpdateModeEnum
{
[Description("Snir")]
INSERT = 0,
[Description("Liraz")]
UPDATE_OR_INSERT = 1,
[Description("Jenny")]
UPDATE = 2,
[Description("Tsuria")]
DELETE_OR_INSERT = 3
};
Scenario:
1.Expand a master row.
2.Start dragging columns from the child template.
3.When your are dragging over the thick border , the exception occur.