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 回答