2

I am using a webgrid to display some dynamic data. I have recently refactored my code, to move away from a hierarchal Model, containing various different types of data to be displayed in a View to using ViewBag.

Previously the grid would sort the columns fine, just be clicking on the header, however since I changed to ViewBag, my table does not sort. My new code is as follows:

@if (ViewBag.data != null)
{
var grid = new WebGrid(
    source: ViewBag.data,
    defaultSort: "StudyName",
    rowsPerPage: 10,
    canSort: true,
    canPage: true,
    ajaxUpdateContainerId: "tableDiv"
    ); 

@grid.GetHtml(
tableStyle: "resultTable",
columns: grid.Columns(
    ViewBag.columns)
)
}

Anybody any ideas?

Thanks.

Darren Young
  • 10,972
  • 36
  • 91
  • 150

1 Answers1

2

Make sure you have set the CanSort property to true on your ViewBag.columns:

ViewBag.columns = new[] 
{
    new WebGridColumn
    {
        ColumnName = "Id"
    },
    new WebGridColumn
    {
        CanSort = true,
        ColumnName = "StudyName"                
    },
};

Only columns that have this property set will appear as hyperlinks in the grid header allowing the user to sort on them.

Darin Dimitrov
  • 1,023,142
  • 271
  • 3,287
  • 2,928