Telerik MVC 网格中的单行样式 - 客户端

发布于 2024-11-30 02:46:47 字数 319 浏览 0 评论 0原文

我正在尝试仅对网格的一行(来自客户端)进行样式设置。

这是我的设置: 我正在使用 Ajax 绑定来加载初始网格数据。之后,我根据其他控件的事件编辑客户端的所有数据。因此,用户可以单击一些其他控件,这会导致在我的网格上“突出显示”一行(而无需实际触摸网格)。

我做了一些检查(使用 firebug),发现创建的表中没有 ID 或类(除了交替行),所以我看不到访问该元素的方法。我想使用 jQuery 并在行上调用 .addClass() 和 .removeClass() 方法,但我不太知道如何访问它们。此时我将采取任何解决方案...那么,这是可能的吗?

预先感谢您的任何帮助!

I am trying to style only one row (from the client) of a Grid.

Here is my setup:
I am using Ajax binding to load the initial Grid data. After that, I am editing all data from the Client side based on events from other controls. So, a user may click some other control which causes a row to be "highlighted" on my Gird (without ever actually touching the grid).

I did some inspecting (with firebug) and see that the in the table that gets created does not have an ID or a class (except the alternating rows) so I don't see a way to access that element. I would like to use jQuery and call the .addClass() and .removeClass() methods on the rows, but I don't quite know how to access them. At this point I will take any solution ... so, is this something that is possible?

Thanks in advance for any help!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

他是夢罘是命 2024-12-07 02:46:47

我最终使用 .ClientTemplate() 将 a 添加到隐藏元素,然后通过查找该行的parent().parent() 找到它所属的行。

Grid Razor:

@(Html.Telerik().Grid<Multimedia.Web.Models.GroupModel>()
    .Name("group-grid")
    .DataBinding(dataBinding => dataBinding.Ajax().Select("_GroupGridAjaxBinding", "TelerikControls"))

    .Columns(columns =>
    {
        columns.Bound(o => o.GroupNumber).Width("30%");
        columns.Bound(o => o.GroupName).Width("80%").Title("Name");
        columns.Bound(o => o.GroupNumber).Hidden(true).ClientTemplate("<div id='group-row-<#= GroupNumber#>'></div>"); //i will find this <td> by the <div> id
    })

   .Scrollable(scrolling => scrolling.Enabled(true))
   .Sortable(sorting => sorting.Enabled(true))
   .Pageable(paging => paging.Enabled(false))
   .Filterable(filtering => filtering.Enabled(false))
   .Groupable(grouping => grouping.Enabled(false))
   .Footer(false)
)

然后,在我的 JavaScript 中,我能够使用以下 jQuery 访问表行:

var groupNum = getGroupNumSomehow();
$('#group-row-' + groupNum).parent().parent().addClass('highlight');

并且它有效!

I ended up using the .ClientTemplate() to add a to a hidden element, then found the row it belongs to by finding the row's parent().parent().

Grid Razor:

@(Html.Telerik().Grid<Multimedia.Web.Models.GroupModel>()
    .Name("group-grid")
    .DataBinding(dataBinding => dataBinding.Ajax().Select("_GroupGridAjaxBinding", "TelerikControls"))

    .Columns(columns =>
    {
        columns.Bound(o => o.GroupNumber).Width("30%");
        columns.Bound(o => o.GroupName).Width("80%").Title("Name");
        columns.Bound(o => o.GroupNumber).Hidden(true).ClientTemplate("<div id='group-row-<#= GroupNumber#>'></div>"); //i will find this <td> by the <div> id
    })

   .Scrollable(scrolling => scrolling.Enabled(true))
   .Sortable(sorting => sorting.Enabled(true))
   .Pageable(paging => paging.Enabled(false))
   .Filterable(filtering => filtering.Enabled(false))
   .Groupable(grouping => grouping.Enabled(false))
   .Footer(false)
)

And then, in my JavaScript, I was able to access the table row using the following jQuery:

var groupNum = getGroupNumSomehow();
$('#group-row-' + groupNum).parent().parent().addClass('highlight');

And it worked!

_蜘蛛 2024-12-07 02:46:47

当这些外部操作发生时,您始终可以使用客户端行模板并重新绑定网格。下面是 Telerik 的客户端行模板示例,该模板在执行 ajax 绑定时使用:

<%= Html.Telerik().Grid<Customer>()
   .Name("Grid")
   .DataBinding(dataBinding => dataBinding.Ajax().Select("Action", "Controller"))
   .Columns(columns =>
   {
       columns.Bound(c => c.CustomerID);
       columns.Bound(c => c.ContactName);
       columns.Bound(c => c.Country);
   })
   .ClientRowTemplate(grid => "<ul>" +
           "<li>CustomerID: <#= CustomerID #></li>" +
           "<li>Contact Name: <#= ContactName #></li>" +
           "<li>Country: <#= Country #></li>" +
        "</ul>" 
   )
%>

这可能允许您将信息注入到可用于突出显示的每一行中。

有关它的更多文档,请访问 Telerik 网站。

You could always use the client-side row template and re-bind the grid when these external actions occur. Here's Telerik's example of the client-side row template to be used when doing ajax binding:

<%= Html.Telerik().Grid<Customer>()
   .Name("Grid")
   .DataBinding(dataBinding => dataBinding.Ajax().Select("Action", "Controller"))
   .Columns(columns =>
   {
       columns.Bound(c => c.CustomerID);
       columns.Bound(c => c.ContactName);
       columns.Bound(c => c.Country);
   })
   .ClientRowTemplate(grid => "<ul>" +
           "<li>CustomerID: <#= CustomerID #></li>" +
           "<li>Contact Name: <#= ContactName #></li>" +
           "<li>Country: <#= Country #></li>" +
        "</ul>" 
   )
%>

This might allow you to inject information into each row you can use to highlight.

More documentation about it on Telerik's site.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文