Hello,
in my web application I have a problem using GridSettingsPersister. In the applcation I have different RadGrid and I want let the user modify them (move columns, change column order/visibility/size). So i followed the instruction at http://demos.telerik.com/aspnet-ajax/grid/examples/programming/savinggridsettingsonperuserbasis/defaultcs.aspx.
I want the user to access a single page where he can choose which RadGrid to modify. After he choses the RadGrid, the application loads the chosen view grid into a panel and let the user modify it. After that we can save the configuration string in database.
I've used the GridSettingsPersister class of the example.
My problem is this:
- I choose the radgrid and load the radgrid to modify into the panel
- I modify some column visibility (show only 3 columns for example)
- I correctly save the settings into db
- I load the configuration from database string (here all works fine)
- I add visibility to another column and retry to save
- Now I load the settings from the database string instead of havinf 4 columns I see all columns of grid (it seems a wrong configuration string has been saved into database)
I use the following code to:
-load configuration
-save configuration
-this is the code behind of my page
in my web application I have a problem using GridSettingsPersister. In the applcation I have different RadGrid and I want let the user modify them (move columns, change column order/visibility/size). So i followed the instruction at http://demos.telerik.com/aspnet-ajax/grid/examples/programming/savinggridsettingsonperuserbasis/defaultcs.aspx.
I want the user to access a single page where he can choose which RadGrid to modify. After he choses the RadGrid, the application loads the chosen view grid into a panel and let the user modify it. After that we can save the configuration string in database.
I've used the GridSettingsPersister class of the example.
My problem is this:
- I choose the radgrid and load the radgrid to modify into the panel
- I modify some column visibility (show only 3 columns for example)
- I correctly save the settings into db
- I load the configuration from database string (here all works fine)
- I add visibility to another column and retry to save
- Now I load the settings from the database string instead of havinf 4 columns I see all columns of grid (it seems a wrong configuration string has been saved into database)
I use the following code to:
-load configuration
public
static
void
LoadGridConfiguration(RadGrid pRdg,
long
pIdGruppoUtente,
bool
loadDefaultString =
false
)
{
GridSettingsPersister gsp =
new
GridSettingsPersister(pRdg);
using
(DMWEntities context =
new
DMWEntities())
{
long
idControlloAspx = (from ctrl
in
context.ControlliAspx
where (ctrl.NomeControllo == pRdg.ID)
select ctrl.IdControlloAspx).SingleOrDefault();
if
(idControlloAspx == 0)
{
throw
new
Exception(
"Grid Control not defined in database [ControlliAspx]"
);
}
var stringaConfigurazioneGruppoUtente = (from pg
in
context.ProprietaGriglie
where (pg.IdControlloAspx == idControlloAspx) && (pg.IdGruppoUtente == pIdGruppoUtente)
select
new
{ pg.StringaConfigurazione, pg.StringaConfigurazioneDefault }).FirstOrDefault();
if
(loadDefaultString)
{
gsp.LoadSettings(stringaConfigurazioneGruppoUtente.StringaConfigurazioneDefault);
}
else
{
gsp.LoadSettings(stringaConfigurazioneGruppoUtente.StringaConfigurazione);
}
}
}
-save configuration
protected
void
btnPersistConfiguration_Clicked(
object
sender, EventArgs e)
{
MachinaWeb.ServerControls.RadPageView paginaConComboIdGruppoUtente = (MachinaWeb.ServerControls.RadPageView)((System.Web.UI.Control)MachinaWeb.ServerControls.Utility.FindControlType((Control)sender,
typeof
(MachinaWeb.ServerControls.RadPageView)));
MachinaWeb.ServerControls.RadGrid gridUC = (MachinaWeb.ServerControls.RadGrid)((System.Web.UI.Control)MachinaWeb.ServerControls.Utility.FindControlType((Control)sender,
typeof
(MachinaWeb.ServerControls.RadGrid)));
long
selectedGU =
long
.Parse( ((RadComboBox)paginaConComboIdGruppoUtente.FindControl(
"blccmbGruppoUtente"
)).SelectedValue );
//MessageBox.ShowTelerik(Page, this, "Configurazione salvata (Id Gruppo " + blccmbGruppoUtente.SelectedValue + ")");
string
gridName = gridUC.ID;
using
(DMWEntities context =
new
DMWEntities())
{
long
idControlloAspx = (from ctrl
in
context.ControlliAspx
where (ctrl.NomeControllo == gridName)
select ctrl.IdControlloAspx).SingleOrDefault();
if
(idControlloAspx == 0)
{
throw
new
Exception(
"Grid Control not defined in database [ControlliAspx]"
);
}
var propGriglia = (from pg
in
context.ProprietaGriglie
where (pg.IdControlloAspx == idControlloAspx) && (pg.IdGruppoUtente == selectedGU)
select pg).FirstOrDefault();
GridSettingsPersister gsp =
new
GridSettingsPersister(gridUC);
string
stringaConfigurazioneVista = gsp.SaveSettings();
if
(propGriglia ==
null
)
{
//Creates row in database [Proprieta griglie]
ProprietaGriglie pgNew =
new
ProprietaGriglie() { IdGruppoUtente = selectedGU, NomeGriglia = gridName, StringaConfigurazione = stringaConfigurazioneVista, IdControlloAspx = idControlloAspx, DataCreazione = DateTime.Now, DataAggiornamento = DateTime.Now, IdUtente = ((SessionInformation)Session[
"sessionData"
]).IdUtente };
context.ProprietaGriglie.AddObject(pgNew);
context.SaveChanges();
}
else
{
//Updates row [Proprieta griglie]
var pg = (from pgUpd
in
context.ProprietaGriglie
where (pgUpd.IdControlloAspx == idControlloAspx) && (pgUpd.IdGruppoUtente == selectedGU)
select pgUpd).Single();
pg.StringaConfigurazione = stringaConfigurazioneVista;
context.SaveChanges();
}
}
}
-this is the code behind of my page
public
partial
class
Configurazione_VisteTabellari : System.Web.UI.Page
{
private
RadGrid rdg =
new
RadGrid();
protected
void
Page_Init(
object
sender, EventArgs e)
{
hfdIdCultura.Value = ((SessionInformation)Session[
"sessionData"
]).IdCultura.ToString();
}
protected
override
void
InitializeCulture()
{
System.Threading.Thread.CurrentThread.CurrentCulture =
new
System.Globalization.CultureInfo(((SessionInformation)Session[
"sessionData"
]).Cultura);
System.Threading.Thread.CurrentThread.CurrentUICulture =
new
System.Globalization.CultureInfo(((SessionInformation)Session[
"sessionData"
]).Cultura);
base
.InitializeCulture();
}
protected
void
Page_Load(
object
sender, EventArgs e)
{
//string resource_ModificareLayoutTabella = (string)GetGlobalResourceObject("Resource", "MessaggioModificaLayoutTabella");
using
(DMWEntities context =
new
DMWEntities())
{
if
(!String.IsNullOrEmpty(hdfIdMascheraSelezionata.Value))
{
long
idMascheraSelezionata =
long
.Parse(hdfIdMascheraSelezionata.Value);
string
urlVisioneTabellare = (from masc
in
context.Maschere
where masc.IdMaschera == idMascheraSelezionata
select masc.UrlControlloVistaTabellare).Single<
string
>();
try
{
RadGridStabilimenti uc = ((RadGridStabilimenti)LoadControl(urlVisioneTabellare));
uc.Type = CommonParameters.RadGridType.Configurazione;
pnlVistaTabellare.Controls.Clear();
pnlVistaTabellare.Controls.Add(uc);
}
catch
(Exception)
{ }
//Loads stringa configurazione di default per la grid
//RadGrid gridUC = ((IUserControlGrid)pnlVistaTabellare.Controls[0]).GetGrid();
//if (!Page.IsPostBack)
//{
// try
// {
// Utility.LoadGridConfiguration(gridUC, ((SessionInformation)Session["sessionData"]).IdGruppoUtente, true);
// }
// catch (ArgumentNullException)
// {
// }
//}
string
selectedGU = (((SessionInformation)Session[
"sessionData"
]).IdGruppoUtente).ToString();
blccmbGruppoUtente.SelectedValue = selectedGU;
blccmbGruppoUtente.DataBind();
//gridUC.DataBind();
}
}
}
protected
void
rtsPagina_TabClick(
object
sender, RadTabStripEventArgs e)
{
rts_Pagina.SelectedIndex = e.Tab.Index;
rmp_Pagina.SelectedIndex = e.Tab.Index;
}
protected
void
RadGridVisioniTabellari_ItemCreated(
object
sender, GridItemEventArgs e)
{
////Sets filter's textbox width
//if (e.Item is GridFilteringItem)
//{
// //30px di differenza rispetto alla larghezza della colonna
// GridFilteringItem gridFilteringItem = (GridFilteringItem)e.Item;
// ((TextBox)(gridFilteringItem["NomeMaschera"]).Controls[0]).Width = Unit.Pixel((int)(900 - CommonParameters.GridFilterWidthDistances));
//}
}
protected
void
btnLoadConfiguration_Click(
object
sender, EventArgs e)
{
RadGrid gridUC = ((IUserControlGrid)pnlVistaTabellare.Controls[0]).GetGrid();
string
gridName = gridUC.ID;
GridSettingsPersister gsp =
new
GridSettingsPersister(gridUC);
Utility.LoadGridConfiguration(gridUC,
long
.Parse(blccmbGruppoUtente.SelectedValue));
}
}