2

私はこのグリッドビューを使用しています:

<asp:GridView ID="gvMessages" runat="server" AutoGenerateColumns = "false" 
    CaptionAlign="NotSet" CellPadding="5" onrowcommand="gvMessages_RowCommand">
    <Columns>
        <asp:TemplateField HeaderText="Avändare">
            <ItemTemplate>
                <%# GetSender((int)Eval("Sender"))%>
                <br />
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Ämne">
            <ItemTemplate>
                <%# Eval("Head")%>
                <br />
            </ItemTemplate>
        </asp:TemplateField>
        <asp:ButtonField Text="Öppna" CommandName="Open" />
    </Columns>
</asp:GridView>

クリックされた行のバインドされたオブジェクト (Eval("Message")) のメッセージ メンバーを表示するテキスト ボックスが必要です。

4

1 に答える 1

1

コメントから、クライアントで表示/非表示を行うことをお勧めします。これにより、サーバーへの往復を節約できます

<asp:GridView ID="gvMessages" runat="server" AutoGenerateColumns = "false" 
    CaptionAlign="NotSet" CellPadding="5">
    <Columns>
        <asp:TemplateField HeaderText="Avändare">
            <ItemTemplate>
                <%# GetSender((int)Eval("Sender"))%>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:BoundField HeaderText="Ämne" DataField="Head" />

        <asp:TemplateField HeaderText="Avändare">
            <ItemTemplate>
                <button class="btn-showmsg">Öppna</button>
                <div class="message hide">
                    <asp:TextBox runat="server"
                         TextMode="MultiLine" Text="<%= Eval("Message") %>" />
                </div>
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

そしてJavaScriptで

$(function() {

    $(".btn-showmsg").click(function() {
        var tr  = $(this).closest("tr"), // the <tr>
            msg = tr.find(".message");   // the div wraping the message

        msg.show(); // show it
    });

});

さて、メッセージの位置と配置はすべてあなた次第ですが、Bootstrap Modalのようなものを表示することをお勧めします。

また、次のスタイルを追加することを忘れないでください.hide { display: none; }

于 2013-01-09T08:46:05.827 に答える