Можно ли отобразить панель или элемент div между строками gridview по событию RowCommand - PullRequest
1 голос
/ 22 января 2009

В настоящее время я использую gridView, а при событии RowCommand gridview детали выбранной строки отображаются под Gridview. Но теперь я должен отобразить детали чуть ниже строки, по которой щелкнули. Означает, что он будет отображаться между выбранной строкой и следующей строкой. Код вида сетки:

    <asp:GridView ID ="gvUserDataReadOnly" AutoGenerateColumns ="false" runat ="server"   OnRowCommand ="gvUserDataReadOnly_RowCommand"  DataKeyNames ="Guid">
        <Columns >
            <asp:ButtonField ItemStyle-Width ="100px" DataTextField ="FirstName" HeaderText ="<%$ Resources:StringsRes,pge_ContactManager_FirstName %>" SortExpression ="FiratName" CommandName ="show_Details" ButtonType ="link" />
            <asp:ButtonField ItemStyle-Width ="100px" DataTextField ="LastName" HeaderText ="<%$ Resources:StringsRes,pge_ContactManager_LastName %>" SortExpression ="LastName" CommandName ="show_Details" ButtonType ="link" />                
            <asp:BoundField ItemStyle-Width ="100px" DataField ="TypeName" HeaderText ="<%$ Resources:StringsRes,pge_ContactManager_TypeName %>" SortExpression ="TypeId" />
        </Columns>
        <RowStyle Height="25px" />
        <HeaderStyle Height="30px"/>
    </asp:GridView>

и тег div, который я хочу отобразить в строках betwwen:

<div id ="dvUserDatails" runat ="server" visible ="false" class ="eventcontent">
        <h2><asp:Literal ID ="ltUserName" runat ="server" ></asp:Literal></h2>
        <asp:Label Text ="Type : " runat ="server" ID ="Type"></asp:Label><asp:Literal ID ="ltType" runat ="server" ></asp:Literal><br />
        <asp:Label Text ="Address : " runat ="server" ID ="Address"></asp:Label><asp:Literal ID ="ltAddress" runat ="server" ></asp:Literal><br />
        <asp:Label Text ="Phone No : " runat ="server" ID ="PhoneNo"></asp:Label><asp:Literal ID ="ltPhoneNo" runat ="server" ></asp:Literal><br />
        <asp:Label Text ="Mobile No : " runat ="server" ID ="MobNo"></asp:Label><asp:Literal ID ="ltMobNo" runat ="server" ></asp:Literal><br />
        <asp:Label Text ="Email Id : " runat ="server" ID ="emailId"></asp:Label><asp:Literal ID ="ltemail" runat ="server" ></asp:Literal><br />
    </div>

Я не могу использовать шаблон EditItem, так как я не использую кнопку Edit в gridview. Может кто-нибудь сказать мне, как сделать эту задачу? Есть ли другой способ сделать это? Заранее спасибо.

Ответы [ 3 ]

1 голос
/ 22 января 2009

Пожалуйста, обратитесь к следующей статье, которая описывает именно то, что вы хотите:
DataGrid и детали с использованием ASP.NET, C # и JavaScript (развернуть / свернуть строки)

1 голос
/ 22 января 2009

Вы, вероятно, хотите использовать повторитель и создать таблицу самостоятельно. Я не думаю, что вы сможете заставить работать GridView, поскольку вы можете контролировать только то, что идет в каждой строке, и то, что вы хотите сделать, это чередовать строки между общей и подробной информацией. Дополнительную информацию о том, как подключить его к источнику данных и обрабатывать нажатия кнопок, можно найти по адресу MSDN .

<asp:Repeater ID="gvUserDataReadOnly" runat="server" DataKeyNames="Guid">
   <HeaderTemplate>
      <table>
         <tr>
            <th>Header 1</th>
             ...
         </tr>
   </HeaderTemplate>
   <ItemTemplate>
       <tr>
          <td>
             ... first name button ...
          </td>
          ...
       </tr>
   </ItemTemplate>
   <AlternatingItemTemplate>
      <tr runat="server" visible="false">
         <td colspan="3">
            ... details (minus div) here ...
        </td>
      </tr>
   </AlternatingItemTemplate>
   <FooterTemplate>
      </table>
   </FooterTemplate>
</asp:Repeater>
0 голосов
/ 22 января 2009

Да - GridView может делать именно то, что вы хотите.

<asp:GridView ...>
    <RowStyle ...>
    <Columns>
        <asp:TemplateField>
            <HeaderTemplate>
            </HeaderTemplate>
            <ItemTemplate>
            </ItemTemplate>
            <FooterTemplate>
            </FooterTemplate
        </asp:TemplateField>
    </Columns>    
</asp:GridView>

HeaderTemplate и FooterTemplate являются необязательными - я думаю, что даже ItemTemplate является необязательным. В любом случае вы можете поместить что-нибудь внутри этих тегов - даже другое представление сетки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...