Nov 29, 2012, 7:33 AM
Gridpanel SelectedRows - dynamic usercontrol
Hi Everyone,
I'm trying to get the SelectedRows form a dynamic loaded usercontrol that contains a gridpanel. Everytime i hit the count the result is 0, while i've selected several items. Can anyone help me? Is there a better way to do this? Should i create every control in codebehind instead of using a usercontrol? Here is my example:
usercontrol that contains the gridpanel
I'm trying to get the SelectedRows form a dynamic loaded usercontrol that contains a gridpanel. Everytime i hit the count the result is 0, while i've selected several items. Can anyone help me? Is there a better way to do this? Should i create every control in codebehind instead of using a usercontrol? Here is my example:
usercontrol that contains the gridpanel
<ext:Label ID="LabelTitel" runat="server" Height="50" />
<ext:Hidden ID="HiddenVerplicht" runat="server" />
<ext:GridPanel ID="GridPanelSpecificatie" runat="server" Layout="FitLayout" Scroll="Vertical" AutoScroll="true" Flex="1">
<Store>
<ext:Store runat="server">
<Model>
<ext:Model runat="server" IDProperty="Id">
<Fields>
<ext:ModelField Name="Id" />
<ext:ModelField Name="Naam" />
</Fields>
</ext:Model>
</Model>
</ext:Store>
</Store>
<ColumnModel>
<Columns>
<ext:Column runat="server" DataIndex="Naam" Flex="1" Border="false" />
</Columns>
</ColumnModel>
<SelectionModel>
<ext:CheckboxSelectionModel ID="CheckboxSelectionModel_GridPanelSpecificatie" runat="server">
<Listeners>
<SelectionChange Fn="GridPanelSpecificatie_SelectionChange" />
</Listeners>
</ext:CheckboxSelectionModel>
</SelectionModel>
</ext:GridPanel>
Page Code// called every page load to recreate the panels
private void PanelSpecificatiesLaden()
{
// init
List<Specificatie> AlleSpecificaties = Helper.Functies.Specificaties.AlleSpecificatiesLaden();
//
foreach (var Specificatie in AlleSpecificaties)
{
// control - gridpanel
var CtrlSpecificatie = this.LoadControl("~/controls/gridpanels/specificatie_gridpanel.ascx") as specificatie_gridpanel;
CtrlSpecificatie.ID = "CtrlSpecificatie_" + Specificatie.Id;
CtrlSpecificatie.Specificatie = Specificatie;
// panel
var PanelSpecificatie = new Panel();
PanelSpecificatie.ID = "PanelSpecificatie_" + Specificatie.Id;
PanelSpecificatie.BodyPadding = 10;
PanelSpecificatie.Layout = "VBoxLayout";
PanelSpecificatie.LayoutConfig.Add(new VBoxLayoutConfig { Pack = BoxPack.Start, Align = VBoxAlign.Stretch });
PanelSpecificatie.ContentControls.Add(CtrlSpecificatie);
PanelSpecificatie.Listeners.Activate.Fn = "SpecificatiesWizardPanel_Activatie";
// toevoegen
PanelStappenWizard.Items.Add(PanelSpecificatie);
}
}
// code to get the selection from the gridpanel
private void GetSelectedRows()
{
// init
List<Specificatie> AlleSpecificaties = Helper.Functies.Specificaties.AlleSpecificatiesLaden();
foreach (var Specificatie in AlleSpecificaties)
{
var CtrlSpecificatie = ControlUtils.FindControl<specificatie_gridpanel>(this, "CtrlSpecificatie_" + Specificatie.Id);
var GridPanelSpecificatie = ControlUtils.FindChildControl(CtrlSpecificatie, "GridPanelSpecificatie") as GridPanel;
if (GridPanelSpecificatie != null)
{
var SelectieModel = GridPanelSpecificatie.GetSelectionModel() as CheckboxSelectionModel;
foreach (var Record in SelectieModel.SelectedRows)
{
// the count is always 0
}
}
}
}