如何在gridview中使用buttonfield

时间:2013-01-09 08:10:45

标签: asp.net gridview markup

我正在使用这个gridview:

<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”))的消息成员。

1 个答案:

答案 0 :(得分: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; }

样式