This is a migrated thread and some comments may be shown as answers.

Problem with CellAction

0 Answers 100 Views
Grid
This is a migrated thread and some comments may be shown as answers.
This question is locked. New answers and comments are not allowed.
Andy McShane
Top achievements
Rank 1
Andy McShane asked on 02 Mar 2011, 11:09 AM
Hi, I am having a problem getting CellAction to work for me, most likely due to some confusion on my part.

I have the following grid defined
<%= Html.Telerik().Grid(Model.BinaryDataList)
    .Name("BinaryData")
    .Columns(columns =>
    {
        columns.Bound(o => o.BinaryDataId).Format(Html.ActionLink("View", "View", "Home",
                                                                  new
                                                                      {
                                                                          id = "{0}"
                                                                      },
                                                                  new {@class = "t-link action-edit"}).
                                                      ToString()).Title("Access").Encoded(false).Width(50)
            .Sortable(false)
            .Filterable(false)
            .HtmlAttributes(new {@style = "text-align:center"});
 
        columns.Bound(o => o.BinaryDataDate).Format("{0:dd MMM yyyy}").Title("Date").Width(100).Filterable(true);
        columns.Bound(o => o.BinaryDataKey).Title("Key").Width(50).Filterable(true);
        columns.Bound(o => o.BinaryDataVersion).Title("Version").Width(50).Filterable(false);
        columns.Bound(o => o.BinaryDataFilename).Title("Filename").Width(250);
        columns.Bound(o => o.BinaryDataDescription).Title("Description").Filterable(false);
        columns.Bound(o => o.BinaryDataFileType).Title("File Type").Width(75);
        columns.Bound(o => o.BinaryDataFolderName).Title("Folder").Width(75);
        columns.Bound(o => o.BinaryDataContentType).Title("Content Type").Width(200);
    })
    .DataBinding(dataBinding => dataBinding.Ajax().Select("AjaxBinaryData", "Home", new{ treatmentId = Model.BinaryData.BinaryDataTreatmentId }))
    .Pageable(paging => paging.PageSize(10))
    .Sortable()
    .Filterable()
%>

I have also defined the following CellAction
.CellAction(cell =>
                {
                    if (cell.Column.Title != "Access") return;
                     
                    if (cell.DataItem.BinaryDataFileType.Trim() == ".swf")
                    {
                        cell.HtmlAttributes["style"] = "background:red;";
                    }
                })

So far this works by setting the background colour of the cell titled 'Access'. However, the background colour does not stay set when I page the grid, the setting is lost. That is my first problem.

As well as setting the background colour I also need to change the Html.ActionLink but I cannot work out what I need to set within the CellAction and also get this to persist over pageing of the grid.

I need to change this
columns.Bound(o => o.BinaryDataId).Format(Html.ActionLink("View", "View", "Home",
                                                          new
                                                              {
                                                                  id = "{0}"
                                                              },
                                                          new {@class = "t-link action-edit"}).
                                              ToString()).Title("Access").Encoded(false).Width(50)
    .Sortable(false)
    .Filterable(false)
    .HtmlAttributes(new {@style = "text-align:center"});

to something like this
.CellAction(cell =>
                {
                    if (cell.Column.Title != "Access") return;
                     
                    if (cell.DataItem.BinaryDataFileType.Trim() == ".swf")
                    {
                        cell.HtmlAttributes["style"] = "background:red;";
 
                        cell.Text = string.Format(Html.ActionLink("Play", "Play", "Home",
                                                                     new
                                                                         {
                                                                             id = "{0}"
                                                                         },
                                                                     new {@class = "t-link action-edit"}).
                                                         ToString());
                    }
                })

But I am just getting myself into a tyerrible mess.

Can anyone help point me in the correct direction?
Tags
Grid
Asked by
Andy McShane
Top achievements
Rank 1
Share this question
or