I have tried for hours now to show/hide columns depending on the selected index of an in a RadGrid imbedded RadComboBox.
The problem is that if i try to rebind in the SelectedIndexChanged event of the imbedded RadComboBox the Inserted Item is disposed.
If i don't rebind the visibility of the columns are not refreshed.
protected void rgvEgenskaber_PreRender(object sender, EventArgs e)
{
if (this.rgvEgenskaber.MasterTableView.IsItemInserted || this.rgvEgenskaber.EditItems.Count > 0)
{
GridEditableItem gridEditableItem = null;
if (this.rgvEgenskaber.MasterTableView.IsItemInserted)
gridEditableItem = this.rgvEgenskaber.MasterTableView.GetInsertItem();
else
gridEditableItem = this.rgvEgenskaber.EditItems[0] as GridEditableItem;
DLDataContext dLDataContext = new DLDataContext();
Egenskab egenskab = dLDataContext.Egenskabs.First(eg => eg.Egenskabid.Equals(Guid.Parse(((RadComboBox)((GridDataItem)gridEditableItem)["EgenskabID"].Controls[1]).SelectedValue)));
//if (gridEditableItem.DataItem != null)
//{
this.rgvEgenskaber.MasterTableView.Columns.OfType<GridColumn>().Where(c => c.UniqueName.Equals("Valglistevaerdi") || c.UniqueName.Equals("Decimalvaerdi") || c.UniqueName.Equals("Heltalsvaerdi")).ToList().ForEach(c => c.Visible = false);
switch (egenskab.Type)
{
case "H":
this.rgvEgenskaber.MasterTableView.GetColumn("Heltalsvaerdi").Visible = true;
break;
case "D":
this.rgvEgenskaber.MasterTableView.GetColumn("Decimalvaerdi").Visible = true;
break;
case "V":
this.rgvEgenskaber.MasterTableView.GetColumn("Valglistevaerdi").Visible = true;
break;
default:
break;
}
}
}
protected void rcbEgenskabID_SelectedIndexChanged(object sender, RadComboBoxSelectedIndexChangedEventArgs e)
{
this.rgvEgenskaber.MasterTableView.Rebind();
}
protected void rgvEgenskaber_ItemCommand(object source, GridCommandEventArgs e)
{
switch (e.CommandName)
{
case RadGrid.InitInsertCommandName:
e.Canceled = true;
if (Request.QueryString["elementType"] != null && Request.QueryString["elementId"] != null)
{
string elementType = Request.QueryString["elementType"];
string elementId = Request.QueryString["elementId"];
DLContext.DLDataContext dLDataContext = new DLDataContext();
Bestemmelse bestemmelse = dLDataContext.Bestemmelses.First(b => b.Bestemmelseid.Equals(Guid.Parse(elementId)));
Egenskab egenSkab = dLDataContext.Egenskabs.First();
Egenskabsforklaring egenskabsforklaring = dLDataContext.Egenskabsforklarings.First();
if (!e.Item.OwnerTableView.IsItemInserted)
e.Item.OwnerTableView.InsertItem(new Egenskabsvaerdi() { Egenskabsvaerdiid = Guid.NewGuid(), Egenskab = egenSkab, Egenskabsforklaring = egenskabsforklaring, Bestemmelse = bestemmelse });
}
break;
case RadGrid.PageCommandName:
break;
default:
break;
}
}
I hope you can help me with this problem.
Sincerly Jan