May 20, 2011, 11:50 AM
[CLOSED] Problems with Hidden Field after SVN Update
Hello,
after an SVN Update (the first since ca. 6 months) we have some trouble with one of our old UserControls.
Here is the Code:
https://examples1.ext.net/#/GridPane...ous/Two_Grids/
but with a Tree at the left side.
The problem is, that the HiddenField is not really found. Firebug says:
ctl00_mainContentPlaceHolder_Fieldset7_Pluginaa35d 9125f5e4416a1d2917ba91b40b8_ItemGrid is not defined
Its a bit strange to me because it seems that the ClientId itself is resolved from:
#{ItemSelected}
to
ctl00_mainContentPlaceHolder_Fieldset7_Pluginaa35d 9125f5e4416a1d2917ba91b40b8_ItemGrid
But the object doesnt seem to be on the page.
Also a
Ext.get('ctl00_mainContentPlaceHolder_Fieldset7_Pl uginaa35d9125f5e4416a1d2917ba91b40b8_ItemGrid')
on the firebug console returns null. Ext.getCmp returns undefined.
Does anybody have an idea? Where there any specific changes the last months on Ext.NET or ExtJS?
As I said its a very old control. If I would build it new from scatch I would use normal JavaScript vars instead of Hidden fields
but we do not have time to rebuild several old UserControls after every Ext.NET udate ;)
So I hope that there is a another solution.
Regards,
Martin
after an SVN Update (the first since ca. 6 months) we have some trouble with one of our old UserControls.
Here is the Code:
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="BuildingSelector.ascx.cs"
Inherits="App.Controls.GL.BuildingSelector" %>
<%@ Register Assembly="Ext.Net" Namespace="Ext.Net" TagPrefix="ext" %>
<style type="text/css" media="screen">
.os-center-panel-base-body
{
background: #efefef;
}
</style>
<ext:ResourceManagerProxy ID="ResourceManagerProxy1" runat="server" />
<script type="text/javascript">
var Selector = {
Add: function (tree, grid) {
currentNode = tree.selModel.getSelectedNode();
if (currentNode != null) {
if (currentNode.leaf) {
this.AddLeafToGrid(currentNode, grid);
} else {
currentNode.expand();
if (currentNode.hasChildNodes()) {
this.AddNodeToGrid(currentNode.childNodes, grid);
}
}
}
},
AddLeafToGrid: function (currentNode, grid) {
var idx = grid.store.find('id', currentNode.id);
if (grid.store.getAt(idx) == undefined) {
// Add node to grid if the node isn't allready in grid
grid.store.add(new Ext.data.Record({
id: currentNode.id,
text: currentNode.text
})
);
currentNode.disable();
}
},
AddNodeToGrid: function (childNodes, grid) {
for (i = 0; i < childNodes.length; i++) {
currentNode = childNodes[i];
if (currentNode.leaf) {
this.AddLeafToGrid(currentNode, grid);
}
}
},
Remove: function (grid, tree) {
if (grid.hasSelection()) {
// get selected Rows
var records = grid.selModel.getSelections();
// it returns selected records, to test it in firefox(firebug)
for (var i = 0; i < records.length; i++) {
// get id of current row
var nodeId = records[i].get('id');
// get node from tree
currentNode = tree.getNodeById(nodeId);
// enable the
if (currentNode != null) currentNode.enable();
}
grid.deleteSelected();
}
},
RemoveAll: function (grid, tree) {
grid.selModel.selectAll();
this.Remove(grid, tree);
},
Save: function (grid, list) {
list.setValue(Ext.encode(grid.getRowsValues(false)));
},
Check: function (grid, tree) {
// it returns selected records, to test it in firefox(firebug)
for (var i = 0; i < grid.store.data.items.length; i++) {
var nodeId = grid.store.data.items[i].get('id');
currentNode = tree.getNodeById(nodeId);
if (currentNode != null) currentNode.disable();
}
},
Fill: function (list, grid) {
listContent = list.getValue();
if (listContent.length > 0) {
entries = Ext.decode(listContent);
//grid.store.loadData(entries);
for (i = 0; i < entries.length; i++) {
grid.store.add(new Ext.data.Record({ id: entries[i].id, text: entries[i].text, tableUid: entries[i].tableUid, dataId: entries[i].dataId }));
}
//Ext.Msg.alert('Status', 'Filled successfully with "' + listContent + '" entries');
}
}
};
</script>
<script type="text/javascript">
var onlyBuildingsCanBeSelected = '<%= Core.Tools.Text.FL.Label.OnlyBuildingsCanBeSelected %>';
var startsWithBuilding = '<%= Core.Providers.NodePath.NodeType.Building %>';
</script>
<ext:Hidden ID="ItemSelected" runat="server" />
<ext:Panel runat="server" ID="Panel1">
<Items>
<ext:ColumnLayout ID="ColumnLayout1" runat="server" FitHeight="true" Split="false">
<Columns>
<ext:LayoutColumn ColumnWidth="0.5">
<ext:TreePanel ID="ItemTree" runat="server" UseArrows="true" AutoScroll="true" TitleCollapse="true"
AnimCollapse="true" Border="true" RootVisible="false" MonitorResize="true" EnableDD="false"
ContainerScroll="true" Footer="false" Height="300">
<TopBar>
<ext:Toolbar runat="server" ID="Toolbar1">
<Items>
<ext:Button runat="server" ID="treeExpand" Text="Expand" IconCls="tree-expand-all">
<Listeners>
<Click Handler="
#{ItemTree}.expandAll();
" />
</Listeners>
</ext:Button>
<ext:Button runat="server" ID="treeCollapse" Text="Collapse" IconCls="tree-collapse-all">
<Listeners>
<Click Handler="
#{ItemTree}.collapseAll();
" />
</Listeners>
</ext:Button>
</Items>
</ext:Toolbar>
</TopBar>
<Loader>
<ext:TreeLoader DataUrl="/neon/App/data/RealEstate.ashx">
<BaseParams>
<ext:Parameter Name="IsSelector" Mode="Raw" Value="true" />
</BaseParams>
</ext:TreeLoader>
</Loader>
<Root>
<ext:AsyncTreeNode NodeID="root" Text="Root" AllowDrop="false" AllowDrag="false">
</ext:AsyncTreeNode>
</Root>
<Listeners>
<BeforeClick Handler="if ((!node.leaf) && (!node.expanded)) node.expand(false);" />
<DblClick Handler="
if ((node.leaf) && (node.id.indexOf(startsWithBuilding) != -1))
Selector.Add(#{ItemTree}, #{ItemGrid});
else if (node.leaf)
Ext.MessageBox.alert('Info', onlyBuildingsCanBeSelected);
" />
<ExpandNode Handler="
Selector.Check(#{ItemGrid}, #{ItemTree});
" />
</Listeners>
</ext:TreePanel>
</ext:LayoutColumn>
<ext:LayoutColumn>
<ext:Panel runat="server" ID="CenterPanel" Width="35" Height="300" Border="true"
BodyBorder="true" BodyStyle="padding: 25px 5px 5px 5px;" Cls="os-center-panel"
CtCls="os-center-panel-ct" BaseCls="os-center-panel-base">
<TopBar>
<ext:Toolbar runat="server" ID="CenterToolbar">
<Items>
<ext:Button ID="dummy01" runat="server" Text="" />
</Items>
</ext:Toolbar>
</TopBar>
<Content>
<ext:Button ID="Button1" runat="server" Icon="ResultsetNext" StyleSpec="margin-bottom:2px;">
<Listeners>
<Click Handler="
Selector.Add(#{ItemTree}, #{ItemGrid});
" />
</Listeners>
</ext:Button>
<ext:Button ID="Button3" runat="server" Icon="ResultsetPrevious" StyleSpec="margin-bottom:2px;">
<Listeners>
<Click Handler="
Selector.Remove(#{ItemGrid}, #{ItemTree});
" />
</Listeners>
</ext:Button>
<ext:Button ID="Button4" runat="server" Icon="ResultsetFirst" StyleSpec="margin-bottom:2px;">
<Listeners>
<Click Handler="
Selector.RemoveAll(#{ItemGrid}, #{ItemTree});
" />
</Listeners>
</ext:Button>
</Content>
</ext:Panel>
</ext:LayoutColumn>
<ext:LayoutColumn ColumnWidth="0.5">
<ext:GridPanel runat="server" ID="ItemGrid" EnableDragDrop="false" AutoExpandColumn="text"
Height="300" Border="true">
<ColumnModel runat="server">
<Columns>
<ext:Column ColumnID="id" Header="Id" DataIndex="id" Hideable="false" Sortable="false"
MenuDisabled="true" Hidden="true" />
<ext:Column ColumnID="text" Header="Building" DataIndex="text" Sortable="true" Hideable="true" />
</Columns>
</ColumnModel>
<SelectionModel>
<ext:RowSelectionModel ID="RowSelectionModel1" runat="server" />
</SelectionModel>
<Listeners>
<DblClick Handler="
Selector.Remove(#{ItemGrid}, #{ItemTree});
" />
</Listeners>
<Store>
<ext:Store runat="server" ID="estateStore">
<Reader>
<ext:JsonReader IDProperty="id">
<Fields>
<ext:RecordField Name="id" Type="Int" Mapping="Id" />
<ext:RecordField Name="text" Type="String" Mapping="Text" SortType="AsText" SortDir="ASC" />
</Fields>
</ext:JsonReader>
</Reader>
<Listeners>
<Load Handler="
Selector.Fill(#{ItemSelected}, #{ItemGrid});
" />
<Add Handler="
Selector.Save(#{ItemGrid}, #{ItemSelected});
" />
<Remove Handler="
Selector.Save(#{ItemGrid}, #{ItemSelected});
" />
</Listeners>
</ext:Store>
</Store>
</ext:GridPanel>
</ext:LayoutColumn>
</Columns>
</ext:ColumnLayout>
</Items>
</ext:Panel>
Its similar to the TwoGrids sample>https://examples1.ext.net/#/GridPane...ous/Two_Grids/
but with a Tree at the left side.
The problem is, that the HiddenField is not really found. Firebug says:
ctl00_mainContentPlaceHolder_Fieldset7_Pluginaa35d 9125f5e4416a1d2917ba91b40b8_ItemGrid is not defined
Its a bit strange to me because it seems that the ClientId itself is resolved from:
#{ItemSelected}
to
ctl00_mainContentPlaceHolder_Fieldset7_Pluginaa35d 9125f5e4416a1d2917ba91b40b8_ItemGrid
But the object doesnt seem to be on the page.
Also a
Ext.get('ctl00_mainContentPlaceHolder_Fieldset7_Pl uginaa35d9125f5e4416a1d2917ba91b40b8_ItemGrid')
on the firebug console returns null. Ext.getCmp returns undefined.
Does anybody have an idea? Where there any specific changes the last months on Ext.NET or ExtJS?
As I said its a very old control. If I would build it new from scatch I would use normal JavaScript vars instead of Hidden fields
but we do not have time to rebuild several old UserControls after every Ext.NET udate ;)
So I hope that there is a another solution.
Regards,
Martin
Last edited by Daniil; May 31, 2011 at 10:46 AM.
Reason: [CLOSED]