2016-04-01 13 views
3

Ich habe eine Grid und in der ersten Spalte habe ich eine Tabelle, die eine zweite Reihe zu erzeugen:Wie fügt man der ersten Spalte in einer Gridview eine Zeilenspanne hinzu?

enter image description here

I der Absender-Adresse möchte über alle Spalten in der Grid zu überspannen.

Code:

<asp:GridView CssClass="printTableResults" runat="server" ID="gvHawb" 
            ShowHeaderWhenEmpty="false" 
            DataKeyField="ID" 
            OnRowDataBound="gvHawb_RowDataBound" 
            AutoGenerateColumns="false" 
            allowpaging="false"> 
            <HeaderStyle CssClass="printTableHeader" /> 
            <RowStyle CssClass="borderB" /> 
            <Columns> 
             <asp:TemplateField HeaderText="HAWB" HeaderStyle-Font-Bold="true" ItemStyle-HorizontalAlign="Center"> 
              <ItemTemplate> 
               <table> 
                <tr> 
                 <td><asp:Label ID="lblAwbNumber" runat="server" Text='<%# Eval("AWBNumber") %>'></asp:Label></td> 
                </tr> 
                <tr> 
                 <td><label>Shipper</label></td> 
                 <td><asp:Label ID="lblFullShipperAddress" runat="server" Text='<%# Eval("FullShipperAddress") %>'></asp:Label></td> 
                </tr> 
               </table> 
              </ItemTemplate> 
             </asp:TemplateField> 
             <asp:TemplateField HeaderText="Pieces" HeaderStyle-Font-Bold="true" ItemStyle-HorizontalAlign="Center"> 
              <ItemTemplate> 
               <asp:Label ID="lblPieces" runat="server" Text='<%# Eval("TotalNoOfPieces") %>'></asp:Label> 
              </ItemTemplate> 
             </asp:TemplateField> 
           </Columns>     
          </asp:GridView> 

Gibt es eine Möglichkeit Versender Spanne der Zeilen der gridview zu machen? Es gibt insgesamt 8 Spalten in dieser Gitteransicht.

Antwort

3

Sie könnten versuchen, die Tabelle mit der Absenderadresse an die ItemTemplate der letzten Spalte in der äußeren Tabelle zu verschieben. Dann legen Sie den Tisch auf seine eigene tr. Etwas wie folgt aus:

<ItemTemplate> 

    <asp:Label ID="lblPieces" runat="server" Text='<%# Eval("TotalNoOfPieces") %>'></asp:Label> 

    </tr>     <!-- end the outer table row --> 
    <tr colspan="7">  <!-- start new row in the outer table --> 
     <table> 
      <tr> 
       <td><asp:Label ID="lblAwbNumber" runat="server" Text='<%# Eval("AWBNumber") %>'></asp:Label></td> 
      </tr> 
      <tr> 
       <td><label>Shipper</label></td> 
       <td><asp:Label ID="lblFullShipperAddress" runat="server" Text='<%# Eval("FullShipperAddress")%>'></asp:Label></td> 
      </tr> 
     </table> 

</ItemTemplate> 

Beachten Sie, dass Sie nicht mit einer Endung </tr> weil die äußere Tabelle Rendering, dass fügt beenden sollte.

Diese Antwort wurde ohne echte Tests zusammengestellt, so dass ich nicht garantieren kann, dass es "out of the box" funktionieren wird.

+0

danke das hat funktioniert – user123456789

0

Wenn Sie die erste Zelle alle 8 Spalten der Zeile zu überbrücken möchten, können Sie diese Prozedur zum PreRender Ereignis des Gridview hinzufügen:

void gvHawb_PreRender(object sender, EventArgs e) 
{ 
    foreach (GridViewRow row in gvHawb.Rows) 
    { 
     if (/* some condition */) 
     { 
      // Remove the other cells of the row 
      while (row.Cells.Count > 1) 
      { 
       row.Cells.RemoveAt(1); 
      } 

      // Set the ColumnSpan attribute 
      row.Cells[0].ColumnSpan = 8; 
     } 
    } 
} 

Ich gehe davon aus, dass es auf Zeilen geschehen wäre, dass treffen eine bestimmte Bedingung.

Sie können auch eine ListView verwenden, die einfacher anzupassen ist als GridView.

+0

Ich möchte nicht die anderen Zellen entfernt werden Ich möchte nur die Adresse über die 8 Spalten erstrecken, aber ich muss immer noch alle anderen Informationen zu sehen. Wenn ich den 'while' Code entferne, vermasselt es die Gridview. – user123456789

Verwandte Themen