我有一个gridview,在第一列中我添加了一个表来创建第二行:
我希望托运人地址跨越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列。
答案 0 :(得分: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>
结束,因为外部表格渲染会添加该结尾。
这个答案是在没有任何真正测试的情况下放在一起的,因此我并不能保证它能够正常工作并且开箱即用#34;。
答案 1 :(得分: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更容易自定义。