I have what seems like a simple task.
My grid looks like this:
and I create it by pulling the data and passing it to the SetupGrid() method (partially) shown below which creates the columns and sets the DataSource. This part works fine.
private void SetupGrid(RadGridView grid,
List<Dictionary>? dictionaryList,
List<CreditInquirySetupEF>? efList,
List<CreditInquirySetupTU>? tuList)
{
grid.Columns.Clear();
grid.Rows.Clear();
grid.Templates.Clear();
grid.MasterTemplate.AutoGenerateColumns = true;
grid.MasterTemplate.ReadOnly = true;
grid.MasterTemplate.ShowChildViewCaptions = false;
grid.MasterTemplate.ShowRowHeaderColumn = false;
grid.ShowRowHeaderColumn = false;
grid.ShowChildViewCaptions = false;
GridViewTemplate template1 = new GridViewTemplate();
GridViewTemplate templateApp = new GridViewTemplate();
if (efList is not null)
{
template1.AutoGenerateColumns = false;
template1.DataSource = null;
template1.DataSource = efList;
template1.AllowAddNewRow = false;
template1.ReadOnly = true;
template1.ShowRowHeaderColumn = false;
template1.Caption = string.Empty;
grid.MasterTemplate.Templates.Add(template1);
template1.MasterTemplate.ShowChildViewCaptions = false;
GridViewRelation relation1 = new GridViewRelation(grid.MasterTemplate);
relation1.ChildTemplate = template1;
relation1.RelationName = "EQVendorID";
relation1.ParentColumnNames.Add("DictionaryKey");
relation1.ChildColumnNames.Add("VendorID");
grid.Relations.Add(relation1);
}
if (tuList is not null)
{
templateApp.AutoGenerateColumns = false;
templateApp.DataSource = null;
templateApp.DataSource = tuList;
templateApp.AllowAddNewRow = false;
templateApp.ReadOnly = true;
templateApp.ShowRowHeaderColumn = false;
templateApp.ShowChildViewCaptions = false;
grid.MasterTemplate.Templates.Add(templateApp);
GridViewRelation relationApp = new GridViewRelation(grid.MasterTemplate);
relationApp.ChildTemplate = templateApp;
relationApp.RelationName = "TUVendorID";
relationApp.ParentColumnNames.Add("DictionaryKey");
relationApp.ChildColumnNames.Add("VendorID");
grid.Relations.Add(relationApp);
}
grid.DataSource = null;
grid.DataSource = dictionaryList;
grid.MasterTemplate.Columns["BranchID"].IsVisible = false;
grid.MasterTemplate.Columns["DictionaryID"].IsVisible = false;
grid.MasterTemplate.Columns["DictionaryKey"].IsVisible = false;
grid.MasterTemplate.Columns["DictionaryKeyString"].IsVisible = false;
grid.MasterTemplate.Columns["DictionaryTypeID"].IsVisible = false;
grid.MasterTemplate.Columns["Active"].IsVisible = false;
grid.MasterTemplate.Columns["Description"].Width = 300;
grid.MasterTemplate.Columns["Description"].HeaderText = "Bureau Name";
grid.MasterTemplate.Columns["Description"].HeaderTextAlignment = ContentAlignment.MiddleLeft;
var buttonCol = new GridViewImageColumn();
buttonCol = new GridViewImageColumn();
buttonCol.HeaderText = "";
buttonCol.Name = "Propertys";
buttonCol.HeaderImage = VisionUI.Properties.Resources.Plus_13;
buttonCol.Width = 30;
buttonCol.AllowSort = false;
grid.MasterTemplate.Columns.Add(buttonCol);
if (efList is not null)
{
grid.MasterTemplate.Templates[0].Caption = "";
var column = new GridViewTextBoxColumn();
column.FieldName = "VendorID";
column.Name = "VendorID";
column.IsVisible = false;
grid.MasterTemplate.Templates[0].Columns.Add(column);
column = new GridViewTextBoxColumn();
column.FieldName = "SettingsBranchID";
column.Name = "SettingsBranchID";
column.IsVisible = false;
grid.MasterTemplate.Templates[0].Columns.Add(column);
column = new GridViewTextBoxColumn();
column.FieldName = "ServiceName";
column.Name = "ServiceName";
column.Width = 145;
column.HeaderText = "Service Name";
column.HeaderTextAlignment = ContentAlignment.MiddleLeft;
column.TextAlignment = ContentAlignment.MiddleLeft;
column.IsVisible = true;
grid.MasterTemplate.Templates[0].Columns.Add(column);The problem comes when I delete a row in the subgrid and physically removing it from the db table. I tried removing the deleted entry from the collection and refreshing and even pulling the data from the database again like this:
int settingsBranchID = absUIControls.GetGridValueInt(gvServiceNames, "SettingsBranchID");
await creditInquirySetupEF.DeleteServiceNameAsync(settingsBranchID);
await creditInquirySetupTU.DeleteServiceNameAsync(settingsBranchID);
vendorList = CommonServices.GetDictionary(EDictionaryType.CreditInquiryVendor, creditInquirySetupEF.BranchID, false);
creditInquirySetupEFList = await creditInquirySetupEF.GetCreditInquirySetupEFAsync(creditInquirySetupEF.BranchID);
creditInquirySetupTUList = await creditInquirySetupTU.GetCreditInquirySetupTUAsync(creditInquirySetupTU.BranchID);
gvServiceNames.DataSource = null;
gvServiceNames.Templates[0].DataSource = null;
gvServiceNames.Templates[1].DataSource = null;
gvServiceNames.DataSource = vendorList;
gvServiceNames.Templates[0].DataSource = creditInquirySetupEFList;
gvServiceNames.Templates[1].DataSource = creditInquirySetupTUList;
gvServiceNames.Refresh();
gvServiceNames.Templates[0].Refresh();
gvServiceNames.Templates[1].Refresh();
foreach (var item in gvServiceNames.Rows)
{
item.IsExpanded = true;
}
gvServiceNames.Templates[0].Rows[0].IsSelected = true;When I reassign the datasources, for some reason the top grid formats like this:
Any ideas as to why?
Thanks
Carl
private void radGridView1_ContextMenuOpening(object sender, ContextMenuOpeningEventArgs e)
{
var cellElement = e.ContextMenuProvider as GridCellElement;
if (cellElement == null) return;
if (cellElement is GridHeaderCellElement)
{
RadMenuItem exportExcel = new RadMenuItem($"ExportToExcel");
exportExcel.Click += (s, args) => { ExportToExcel(); };
e.ContextMenu.Items.Add(exportExcel);
}
}
After upgrade to UI.for.WinForms.AllControls.Net80 <Version>2025.4.1321
cellElement is null in the above line
then return
i can not see "RadMenuItem($"ExportToExcel")"
WHY?

Hello.

I'm trying to eliminate the tab that says table on the subgrids below. I've tried
template1.ShowChildViewCaptions = false;
template1.MasterTemplate.ShowChildViewCaptions = false;
grid.ShowChildViewCaptions = false;
grid.MasterTemplate.ShowChildViewCaptions = false;
Nothing works. What am I doing wrong?
Thanks
Carl


i have a Master-Detail CRUD Job
Details shown using RADGRIDVIEW
for example : Master is "TBSYUSER" class Detail is "TBSYUSAU" class
change master will change detail data
i using BindingList<TBSYUSAU> --> BindingSource -> RADGRIDVIEW
now if detail data's count varing a little large
ex: record count change from 1 to 89 due to master change
RADGRIDVIEW refresh will take more times
should i change strucuture to : Datatable --> BindingSource -> RADGRIDVIEW
or have some suggestion ?
TKs

I would like to expand a GridViewComboBoxColumn list on the same row where on another column that is set to "Lost".
(see attached screenshot)
(1) User clicks on a cell and selects "Lost" from a list
(2) From Cell Event, the "Reason" column (GridViewComboBoxColumn) is automatically expanded so the user knows to select a reason.
private void dgvSales_CellValidating(object sender, CellValidatingEventArgs e)
{
if(e.ColumnIndex >= 0 && e.RowIndex >= 0)
{
switch (e.ColumnIndex)
{
case int _ when e.ColumnIndex == dgvSales.Columns["colWonLost"].Index:
if(e.Value.ToString() == "Lost")
{
dgvSales.CurrentRow.Cells["colReason"].IsSelected = true;
//Add code here to expand colReason list
return;
}
break;
default:
break;
}
}
} //dgvSales CellValidating
Hello,
I want to choose column by checkboxes, something like that:
I
It is possible?
Thank you for your answer

i want to disable some default Column Header Context Menu like "Sort Ascdnging" "Sort Descending" ...
How to do ?
Also i want to disable some default Cell Column Context Menu ? TKS

i use RADGRIDVIEW to show datas
i want to let use to select some rows as "Deleted"
to delete these datas form DataBase
how can i let these rows shown as the following
the example is done by using C# default DataGridView
How can be done in RADGRIDIEW ?
