Aug 02, 2012, 9:53 PM
MVC Store Trouble
Hello,
I've been attempting to make MVC work with Ext.NET in a way that would be conducive to creating view scaffolding. I'm currently trying to get a simple CRUD gridpanel. I've tried to interpret many of the examples to this purpose but I haven't had much luck. Finally I decided to make a regular asp.net web page and suddenly things seem to work.
What I have noticed is that the same code using a regular website will generate a POST with the parameters that are expected. However this code using MVC will generate a GET with only the _dc parameter. This results in an exception from the gridpanel store that has the message "Cannot read property 'data' of undefined".
Here is the markup:
I've been attempting to make MVC work with Ext.NET in a way that would be conducive to creating view scaffolding. I'm currently trying to get a simple CRUD gridpanel. I've tried to interpret many of the examples to this purpose but I haven't had much luck. Finally I decided to make a regular asp.net web page and suddenly things seem to work.
What I have noticed is that the same code using a regular website will generate a POST with the parameters that are expected. However this code using MVC will generate a GET with only the _dc parameter. This results in an exception from the gridpanel store that has the message "Cannot read property 'data' of undefined".
Here is the markup:
<ext:ResourceManager runat="server" />
<asp:LinqDataSource ID="lnqCrews" runat="server"
ContextTypeName="Ext.Net.MVC.Demo.Models.HeadcountDataContext"
EnableDelete="True" EnableInsert="True" EnableUpdate="True" EntityTypeName=""
OrderBy="CrewID" TableName="Crews" AutoPage="true" AutoSort="true">
</asp:LinqDataSource>
<ext:GridPanel
ID="CrewGrid"
runat="server"
Header="false"
Border="false"
TrackMouseOver="true"
Layout="FitLayout">
<Store>
<ext:Store
ID="dsCrews"
runat="server"
AutomaticResponseValues="false"
ShowWarningOnFailure="false"
DataSourceID="lnqCrews"
PageSize="50">
<Model>
<ext:Model ID="Model1" runat="server" IDProperty="CrewID" Name="Crew">
<Fields>
<ext:ModelField Name="CrewID" />
<ext:ModelField Name="CrewDesc" />
<ext:ModelField Name="OldCrewID" />
</Fields>
</ext:Model>
</Model>
<Sorters>
<ext:DataSorter Direction="ASC" Property="CrewID" />
</Sorters>
<Listeners>
<Exception Handler="Ext.Msg.alert('Operation failed', operation.getError());" />
</Listeners>
</ext:Store>
</Store>
<ColumnModel ID="ColumnModel1" runat="server">
<Columns>
<ext:Column ColumnID="CrewID" runat="server" DataIndex="CrewID" Header="ID" Width="75">
<Editor>
<ext:TextField runat="server" />
</Editor>
</ext:Column>
<ext:Column ColumnID="CrewDesc" runat="server" DataIndex="CrewDesc" Header="Crew Description" Flex="2">
<Editor>
<ext:TextField runat="server" />
</Editor>
</ext:Column>
<ext:Column ColumnID="OldCrewID" runat="server" DataIndex="OldCrewID" Header="Old Crew ID" Flex="1">
<Editor>
<ext:TextField runat="server" />
</Editor>
</ext:Column>
</Columns>
</ColumnModel>
<Buttons>
<ext:Button ID="Button1" runat="server" Text="Insert" Icon="Add">
<Listeners>
<Click Handler="#{dsCrews}.insert(0, {}); #{CrewGrid}.editingPlugin.startEditByPosition({row:0, column:0});" />
</Listeners>
</ext:Button>
<ext:Button ID="btnDelete" runat="server" Text="Delete" Icon="Delete" Disabled="true">
<Listeners>
<Click Handler="#{CrewGrid}.deleteSelected();
if (!#{CrewGrid}.hasSelection()) {
#{btnDelete}.disable();
}" />
</Listeners>
</ext:Button>
<ext:Button ID="Button2" runat="server" Text="Save" Icon="Disk">
<Listeners>
<Click Handler="#{dsCrews}.sync();" />
</Listeners>
</ext:Button>
<ext:Button ID="Button3" runat="server" Text="Clear" Icon="Cancel">
<Listeners>
<Click Handler="#{CrewGrid}.getSelectionModel().deselectAll();;
if (!#{CrewGrid}.hasSelection()) {
#{btnDelete}.disable();
}" />
</Listeners>
</ext:Button>
<ext:Button ID="Button4" runat="server" Text="Refresh" Icon="ArrowRefresh">
<Listeners>
<Click Handler="#{dsCrews}.load();" />
</Listeners>
</ext:Button>
</Buttons>
<SelectionModel>
<ext:RowSelectionModel ID="RowSelectionModel1" runat="server" Mode="Multi">
<Listeners>
<Select Handler="#{btnDelete}.enable();" />
<Deselect Handler="if (!#{CrewGrid}.selModel.hasSelection()) {
#{btnDelete}.disable();
}" />
</Listeners>
</ext:RowSelectionModel>
</SelectionModel>
<Plugins>
<ext:CellEditing ID="CellEditing1" runat="server" />
</Plugins>
<View>
<ext:GridView runat="server" StripeRows="true" TrackOver="true" />
</View>
<BottomBar>
<ext:PagingToolbar runat="server" />
</BottomBar>
</ext:GridPanel>