2013-01-09 26 views
2

我用這GridView控件:如何使用ButtonField字段在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(「信息」))被點擊。

+0

什麼時候設置了'Message'?當你點擊該行或將觸發'gvMessages_RowCommand'的按鈕? – balexandre

+0

gridview有一個由郵件對象列表組成的數據源。一個mailobject具有以下成員:消息,收件人,閱讀,發件人,頭。正如您所看到的,發件人和頭部成員正在網格中顯示,但我希望在單擊該行的按鈕時將消息顯示在文本框中。 –

+0

所以,你真正想要的是一個顯示/隱藏的div將包含消息...對不對? – balexandre

回答

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; }

+0

你認爲這可以做到沒有JavaScript? –

+0

當然,但爲什麼?爲什麼你會浪費一次往返服務器,如果你所需要的只是在那裏,就再次加載整個頁面? – balexandre

相關問題