May 28, 2013, 6:52 PM
[CLOSED] Using the value of a component as a Parameter of a TreeStore an exception is thrown
I am trying to add the following parameter to a TreeStore
It happens because the FormPanel (_frm) has not been initialized yet. If i move lines 44 to 49 above line 6, it works since the FormPanel is initialized prior initializing the TreeStore.
It's strange because the problem does not happen in Scenario 2, when i use a Store (GridPanel) instead of using a TreeStore (TreePanel).
Any Ideas?
Thanks in advance.
Scenario 1 - TreeStore - Fail
Scenario 2 - Store - work
<ext:StoreParameter Name="param1" Value="App._frm.form.getFieldValues()" Mode="Raw" Encode="true" />
But i get the following error:It happens because the FormPanel (_frm) has not been initialized yet. If i move lines 44 to 49 above line 6, it works since the FormPanel is initialized prior initializing the TreeStore.
It's strange because the problem does not happen in Scenario 2, when i use a Store (GridPanel) instead of using a TreeStore (TreePanel).
Any Ideas?
Thanks in advance.
Scenario 1 - TreeStore - Fail
<!DOCTYPE html>
<html>
<head id="Head1" runat="server">
</head>
<body>
<ext:ResourceManager runat="server" />
<%--Tree Panel--%>
<ext:TreePanel RootVisible="false" Title="Ext.Net" Height="700" Width="500" Margins="10"
Border="false" runat="server">
<Store>
<ext:TreeStore runat="server">
<Proxy>
<ext:AjaxProxy Url="/Example/LoadFakeChildren">
<ActionMethods Read="POST" />
<Reader>
<ext:JsonReader Root="data" />
</Reader>
</ext:AjaxProxy>
</Proxy>
<Model>
<ext:Model runat="server">
<Fields>
<ext:ModelField Name="Task" />
<ext:ModelField Name="Column1" />
</Fields>
</ext:Model>
</Model>
<Parameters>
<ext:StoreParameter Name="param1" Value="App._frm.form.getFieldValues()" Mode="Raw"
Encode="true" />
</Parameters>
</ext:TreeStore>
</Store>
<Root>
<ext:Node NodeID="0" Text="Root" />
</Root>
<ColumnModel>
<Columns>
<ext:TreeColumn Text="Task" Lockable="true" DataIndex="Task" Flex="2" runat="server" />
<ext:Column Text="Column1" Lockable="true" DataIndex="Column1" runat="server" />
</Columns>
</ColumnModel>
</ext:TreePanel>
<%--Form Panel--%>
<ext:FormPanel ID="_frm" runat="server">
<Items>
<ext:TextField ID="TextField1" runat="server" FieldLabel="First Name" Name="FirstName" />
</Items>
</ext:FormPanel>
</body>
</html>
namespace SandBox.Controllers
{
public class ExampleController : System.Web.Mvc.Controller
{
public ActionResult Index()
{
return View();
}
public StoreResult LoadFakeChildren(string param1)
{
NodeCollection nodes = new NodeCollection(false);
for (int index = 1; index < 6; index++)
{
Node no = new Node();
no.NodeID = index.ToString() + DateTime.Now.Second;
no.CustomAttributes.Add(new ConfigItem { Name = "Task", Value = no.NodeID, Mode = ParameterMode.Value });
no.CustomAttributes.Add(new ConfigItem { Name = "Column1", Value = Guid.NewGuid().ToString(), Mode = ParameterMode.Value });
nodes.Add(no);
}
return new StoreResult { Data = nodes.ToJson() };
}
}
}
Scenario 2 - Store - work
<!DOCTYPE html>
<html>
<head id="Head1" runat="server">
</head>
<body>
<ext:ResourceManager ID="ResourceManager1" runat="server" />
<%--Grid Panel--%>
<ext:GridPanel runat="server" Title="Records" Frame="false" Width="300">
<Store>
<ext:Store runat="server">
<Proxy>
<ext:AjaxProxy Url="/Example/LoadFakeRecords/">
<ActionMethods Read="POST" />
<Reader>
<ext:JsonReader Root="data" />
</Reader>
</ext:AjaxProxy>
</Proxy>
<Model>
<ext:Model runat="server">
<Fields>
<ext:ModelField Name="ID" Type="String" />
<ext:ModelField Name="Name" Type="String" />
</Fields>
</ext:Model>
</Model>
<Parameters>
<ext:StoreParameter Name="param1" Value="App._frm.form.getFieldValues()" Mode="Raw"
Encode="true" />
</Parameters>
</ext:Store>
</Store>
<ColumnModel runat="server">
<Columns>
<ext:Column runat="server" Text="ID" DataIndex="ID" />
<ext:Column runat="server" Text="Name" DataIndex="Name" />
</Columns>
</ColumnModel>
</ext:GridPanel>
<%--Form Panel--%>
<ext:FormPanel ID="_frm" runat="server">
<Items>
<ext:TextField ID="TextField1" runat="server" FieldLabel="First Name" Name="FirstName" />
</Items>
</ext:FormPanel>
</body>
</html>
namespace SandBox.Controllers
{
public class ExampleController : System.Web.Mvc.Controller
{
public ActionResult Index()
{
return View();
}
public StoreResult LoadFakeRecords(string param1)
{
List<Person> lst = new List<Person>();
for (int index = 0; index < 15; index++)
{
lst.Add(new Person
{
ID = index,
Name = "Name" + index
});
}
return new StoreResult(lst, lst.Count());
}
}
public class Person
{
public int ID { get; set; }
public string Name { get; set; }
}
}
Last edited by Daniil; May 31, 2013 at 1:16 PM.
Reason: [CLOSED]