views:

279

answers:

3

Ok, I'll explain. I need to create a datagrid in MVC on the fly (potentially multiple datagrids on a view) depending on a XML file being read in. The file gets looped through and may contain multiple grids of data, the headers and rows are set in the file. The problem being that my application won't know the content of the XML file before reading it so I can't apply it to an IEnumerable model. The idea being to make it generic so that it can read in any XML file I pass to it set up as below and put the data in a sortable datagrid. Is this at all possible with current controls out there? I have tried Teleriks MVC grid and while I can read the data into the grid, I cannot sort the data as this feature will only work when passed a DTO. I have a feeling what I'm looking for can't be done (unless I write a custom HTMLHelper or something) but no harm in asking I guess

My xml will be as such

<xml>
  <REPORT>
     <HEADERS>
       <HEAD>Col1</HEAD>           
       <HEAD>Col2</HEAD>
     </HEADERS>         
     <ROWS>
       <ROW>Data1</ROW>           
       <ROW>Data2</ROW>
     </ROWS>
  </REPORT>
 </xml>

Thanks

+1  A: 

I haven't seen a helper extension out there that does what you need.

There are some good ones that work with generic collections (such as Telerik's or MVCContrib's). The sample you provide cannot be translated in to a collection that would be handled by these however: the row needs to have cells that can be matched to the header elements.

<xml>
  <REPORT>
     <HEADERS>
       <HEAD>Col1</HEAD>           
       <HEAD>Col2</HEAD>
     </HEADERS>         
     <ROWS>
       <ROW><CELL>Data1</CELL><CELL>Data2</CELL></ROW>           
       <ROW><CELL>Data2</CELL><CELL>Data4</CELL></ROW>
     </ROWS>
  </REPORT>
 </xml>

If the XML can be deserialized into a generic collection, it is easy to populate the grid.

Hope this helps.

robDean
Thanks for the reply, I'm currently in the process of writing my own sort/filter grid, the job is an usual one and my hands are tied by how I receive the reports.
Israfel
+1  A: 

I'd look into the JQuery Grid. You have to munge the data into the format that it wants, but it gives you a lot of flexibility and nice UI for free. You will still need to write sort code, though.

Jeremy
+1  A: 

I would advise using the jquery grid. Then write a class to parse the xml and generate the grid javascript in the view, and a second action to parse the xml (again) and generate the json result. MVCCrud may help with the idea there is a generic jquery grid in there but it works off an IQueryable list so would need to be adapted.

Matthew Hood
Thanks guys, I will do up a test project with this this morning, this tutorial here seems to be along the lines of what I'm looking for http://blogs.teamb.com/craigstuntz/2009/04/15/38212/
Israfel