Jun 16, 2011, 9:43 AM
[CLOSED] MVC Grid/Store Export to .xls/.csv/.xml
Hi,
In relation with this post:
http://forums.ext.net/showthread.php...csv-.xml-Error
I'm trying to perform an Export action but there is no way to go...
My code is as follows:
Controller:
Any clue about how to get it working?
Thanks in advance.
In relation with this post:
http://forums.ext.net/showthread.php...csv-.xml-Error
I'm trying to perform an Export action but there is no way to go...
My code is as follows:
Controller:
public ActionResult Export(string data, string format)
{
Ext.Net.SubmitHandler submitData = new Ext.Net.SubmitHandler(data);
XmlNode xml = submitData.Xml;
MemoryStream m = new MemoryStream(System.Text.Encoding.Default.GetBytes(xml.OuterXml));
XPathDocument xpathDoc = new XPathDocument(new StreamReader(m));
XslCompiledTransform transform = new XslCompiledTransform();
StringBuilder resultString = new StringBuilder();
XmlWriter writer = XmlWriter.Create(resultString);
string contentType = string.Empty;
switch (format)
{
case "xml":
contentType = "application/xml";
break;
case "xls":
contentType = "application/vnd.ms-excel";
transform.Load(Server.MapPath("~/Resources/xsl/Excel.xsl"));
transform.Transform(xpathDoc, writer);
break;
case "csv":
contentType = "application/octet-stream";
transform.Load(Server.MapPath("~/Resources/xsl/Csv.xsl"));
transform.Transform(xpathDoc, writer);
break;
}
var result = new FileContentResult(Encoding.UTF8.GetBytes(resultString.ToString()), contentType);
result.FileDownloadName = string.Format("TempoMillenium.{0}", format);
return result;
}
View: <ext:Window ID="ResultsWindow" runat="server" Title="Results"
Width="600" Height="300" MinHeight="300" MinWidth="600" Hidden="true" Border="false" Modal="true" Maximizable="true">
<Items>
<ext:BorderLayout runat="server">
<Center>
<ext:FormPanel ID="ResultsForm" runat="server" Url='<%# Url.Action("Export") %>' AutoDataBind="true" Border="false" Frame="true" AutoHeight="true">
<Items>
<ext:Hidden ID="FormatType" runat="server" />
<ext:GridPanel
ID="gridResults"
runat="server"
Layout="Fit"
TrackMouseOver="true"
AutoExpandColumn="Msg"
Title="Results">
<Store>
<ext:Store
runat="server"
ID="dsResults"
RemoteSort="true"
AutoLoad="false">
<Proxy>
<ext:HttpProxy Method="POST" Url='<%# Url.Action("Results") %>' AutoDataBind="true" />
</Proxy>
<Reader>
<ext:JsonReader IDProperty="Id" Root="data">
<Fields>
<ext:RecordField Name="Id" />
<ext:RecordField Name="Msg" />
</Fields>
</ext:JsonReader>
</Reader>
</ext:Store>
</Store>
<TopBar>
<ext:Toolbar runat="server">
<Items>
<ext:ToolbarFill runat="server" />
<ext:Button runat="server" Text="To XML" Icon="PageCode">
<DirectEvents>
<Click Url='<%# Url.Action("Export") %>' AutoDataBind="true" IsUpload="true">
<ExtraParams>
<ext:Parameter Name="data" Value="#{gridResults}.getRowsValues()" Mode="Raw" Encode="true" />
<ext:Parameter Name="format" Value="xml" Mode="Value" />
</ExtraParams>
</Click>
</DirectEvents>
</ext:Button>
<ext:Button runat="server" Text="To Excel" Icon="PageExcel">
<DirectEvents>
<Click Url='<%# Url.Action("Export") %>' AutoDataBind="true" IsUpload="true">
<ExtraParams>
<ext:Parameter Name="data" Value="#{gridResults}.getRowsValues()" Mode="Raw" Encode="true" />
<ext:Parameter Name="format" Value="xls" Mode="Value" />
</ExtraParams>
</Click>
</DirectEvents>
</ext:Button>
<ext:Button runat="server" Text="To CSV" Icon="PageAttach">
<DirectEvents>
<Click Url='<%# Url.Action("Export") %>' AutoDataBind="true" IsUpload="true">
<ExtraParams>
<ext:Parameter Name="data" Value="#{gridResults}.getRowsValues()" Mode="Raw" Encode="true" />
<ext:Parameter Name="format" Value="csv" Mode="Value" />
</ExtraParams>
</Click>
</DirectEvents>
</ext:Button>
</Items>
</ext:Toolbar>
</TopBar>
<ColumnModel runat="server">
<Columns>
<ext:Column ColumnID="Id" DataIndex="Id" Header="Id" Width="100">
<Renderer Handler="return Ext.util.Format.htmlEncode(value);" />
</ext:Column>
<ext:Column ColumnID="Msg" DataIndex="Msg" Header="Result">
<Renderer Handler="return Ext.util.Format.htmlEncode(value);" />
</ext:Column>
</Columns>
</ColumnModel>
<SelectionModel>
<ext:RowSelectionModel runat="server" />
</SelectionModel>
<LoadMask ShowMask="true" />
</ext:GridPanel>
</Items>
</ext:FormPanel>
</Center>
</ext:BorderLayout>
</Items>
<Buttons>
<ext:Button runat="server" Text="Accept">
<Listeners>
<Click Handler="#{ResultsWindow}.hide();" />
</Listeners>
</ext:Button>
</Buttons>
</ext:Window>
At the moment, I have a Request Failure window with Status Text: NORESPONSE.Any clue about how to get it working?
Thanks in advance.
Last edited by Daniil; Jun 17, 2011 at 2:08 PM.
Reason: [CLOSED]