1

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 に表示されていない別の値を送信したいと考えています。この場合、「messageGuiD」という名前のメッセージごとに生成された GUID です。

「td:first」を messageGuiD に置き換えてみましたが、コンマ、ピリオド、コロンなどをジャグリングして機能させましたが、成功しませんでした。最も近いのは、messageGuiD フィールドを webgrid の一部にし、スタイリングを使用して作成することでした。非表示 (display:none) であり、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:first の問題は、最初のセルにあるものとのリンクを生成することです。私の場合、メッセージの送信者であり、リンク /Messages/Reply/benatssu を生成し、たとえ私が件名を最初の列に移動すると、リンクは /Messages/Reply/hello になります。

1 つの方法は、最初の列に messageGuiD を表示し、リンクを Messages/Reply/msg-c75b7310-3708-42b2-bb6a-084ac97dd63c にすることです (これは私が望むものです)。 .

とにかく、この質問は十分に長く続いています。誰かがJavaScriptにデータベースから値を読み取らせる複雑でない方法を知っているなら、それは素晴らしいことです。行全体を選択できるようにする方がはるかにきれいです。御時間ありがとうございます。

4

2 に答える 2

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

またはクラスを使用できます

 $(this).find('td.msubject a').attr('href');
于 2013-02-03T10:02:09.217 に答える