网格中的可点击行,使用razor / javascript

时间:2013-02-03 08:52:00

标签: c# javascript razor webgrid

使用webgrid助手我已经使用了一些JavaScript来使整个行可以点击,并且工作正常,但JavaScript中的href链接需要包含剃刀。

javascript代码:

<script type="text/javascript">
$(function(){
    $('tbody tr').live('hover', function(){
        $(this).toggleClass('clickable');
    }).live('click', function(){
        location.href = '/Messages/Reply/' + $(this).find('td:first').text();   
    }); 
});
</script>

但是这段代码在第一个单元格中取值并在链接中使用它,我想发送一个不在webgrid中显示的不同值。在这种情况下,为每条消息生成一个guid,名为“messageGuiD”。

我尝试用messageGuiD和juggled逗号,句号,冒号和任何东西替换'td:first'以使其工作但没有成功..我最接近的是我将messageGuiD字段作为webgrid的一部分并使用样式化使其隐藏(显示:无),并且它的工作方式就是将messageGuiD发送到URL,但这会使标题不合适并对表格格式产生一些副作用......

webgrid帮助器从数据库生成一个表,在这种情况下它是一个消息收件箱,这里是生成的html示例:

<table class="table" data-swhgajax="true" data-swhgcontainer="contentgrid" data- swhgcallback="addCheck">
<thead>
    <tr class="header">
        <th scope="col">
<a data-swhglnk="true" href="/Messages/Inbox?sort=FromUser&amp;sortdir=ASC">From</a>             </th>
        <th scope="col">
<a data-swhglnk="true" href="/Messages/Inbox?sort=messageSubject&amp;sortdir=ASC">Subject</a>            </th>
        <th scope="col">
<a data-swhglnk="true" href="/Messages/Inbox?sort=DateSent&amp;sortdir=ASC">Date Sent</a>            </th>
        <th scope="col">
        </th>
    </tr>
</thead>
<tbody>
    <tr class="rows">
        <td class="mfrom">benatssu</td>
        <td class="msubject"><a href="/Messages/Reply/msg-c75b7310-3708-42b2-bb6a-084ac97dd63c">hello</a></td>
        <td class="mdate">Feb 4, 2013<br>8:02 PM</td>
        <td class="mdel"><input type="checkbox" name="deleteMsg" value="msg-c75b7310-3708-42b2-bb6a-084ac97dd63c"></input></td>
    </tr>
</tbody>
</table>

用户可以通过单击链接到主题列的主题来打开他们的消息,获取webgrid帮助器中使用的链接的代码如下:

format: @<a href="~/Messages/Reply/@item.messageGuiD">@item.messageSubject</a>

首先在JavaScript中使用td:问题是它生成与第一个单元格中的内容的链接,在我的情况下,它是消息来自的人,并将生成链接/ Messages / Reply / benatssu和即使我将主题移到第一列,链接也会变为/ Messages / Reply / hello。

一种方法是在第一列显示messageGuiD,链接变为Messages / Reply / msg-c75b7310-3708-42b2-bb6a-084ac97dd63c(这就是我想要的)但是我显示了一个丑陋的长号在表中。

无论如何,这个问题已经持续了很长时间,如果有人知道一种非复杂的方法让JavaScript从数据库中读取值然后很棒,如果不是那么它没关系,代码适用于主题名称的较小链接,整个行可选择更漂亮。谢谢你的时间。

2 个答案:

答案 0 :(得分:1)

$(this).find('td:eq(1) a').attr('href');

或者你可以使用类

 $(this).find('td.msubject a').attr('href');

答案 1 :(得分:1)

使用A标签的ID存储messageGuiD-然后修改jquery> $(this).find('td> a')。attr('id')

格式:@@ item.messageSubject

想法在这里... Get attr('id') from a <td> using jQuery