2016-04-01 62 views
3

我有一個GridView和第一列我添加了一個表來創建第二行:如何將一個rowspan添加到gridview中的第一列?

enter image description here

我想託運人地址跨在GridView的所有列跨越。

代碼:

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

有沒有一種方法,使託運人跨度在GridView的行? 這個gridview總共有8列。

回答

3

您可以嘗試將包含發貨人地址的表格移動到外表最後一列的ItemTemplate。然後把表放在它自己的tr上。事情是這樣的:

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

請注意,你不應該結束</tr>因爲外部表的渲染將添加完成了。

這個答案放在一起沒有任何真正的測試,所以我不能保證它會「開箱即用」。

+0

感謝此工作 – user123456789

0

如果你想第一個單元格跨越行的所有8列,你可以這樣處理程序添加到GridView的PreRender事件:

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

我認爲它會在滿足行完成一個特定的條件。

您也可以考慮使用ListView,它比GridView更容易定製。

+0

我不希望其他單元格被刪除我只是希望地址跨越8列,但我仍然需要看到所有其他信息。如果我刪除'while'代碼,它會擾亂gridview。 – user123456789

相關問題