0

我有一个 html 表,其中有一个带有 runat=server 的元素。我正在从后面的代码中加载一些用户控件。

    <td id ="ModuleGridHolder" runat="server" rowspan="3">            
    </td>

这是用户控件 HTML

    <%@ Control Language="C#" AutoEventWireup="true" CodeBehind="ModuleGrid.ascx.cs"
    Inherits="RadTreeListTest.Controls.ModuleGrid" %>

    <table cellpadding="0px" cellspacing="0px" style="width:100%;">

    <tr>
    <td colspan="2">
        <asp:GridView ID="gvSectionCells" runat="server" Width="100%" AutoGenerateColumns= "true">
            <HeaderStyle BackColor="#9999FF" />
            <RowStyle HorizontalAlign="Center" />
        </asp:GridView>
    </td>
    <td>
        <asp:GridView ID="gvSectionTotalCells" runat="server" Width="100%" AutoGenerateColumns="false">
            <HeaderStyle BackColor="#9999FF" />
            <RowStyle HorizontalAlign="Center" />
          <Columns>
                <asp:BoundField DataField="sumRow" HeaderText="" />                                      
            </Columns>              
        </asp:GridView>
    </td>
</tr>

这是代码的简化版本,它在其中呈现几个用户控件。

  foreach loop
  {
      ModuleGrid mg = (ModuleGrid)LoadControl("ModuleGrid.ascx");
      ModuleGridHolder.Controls.Add(mg);
  }

问题是所有呈现的控件都在彼此之上垂直加载 IE。如何在单元格内水平对齐它们?

我试过使用 float:left 但它不起作用?

4

1 回答 1

0

在代码中使用 CssClass 参数并应用于每个控件。这样,您可以集中设置页面上加载的每个动态控件的样式:

foreach loop
{
    ModuleGrid mg = (ModuleGrid)LoadControl("ModuleGrid.ascx");
    mg.CssClass = "myStyle";
    ModuleGridHolder.Controls.Add(mg);
}

一旦控件使用您的样式表类,将样式表链接到您的 aspx 页面并使用如下内容:

.myStyle
{
   float: left;
   width: 100px;
}

如果您已经在做类似的事情,我建议为每个控件分配一个固定的宽度(或百分比),看看是否让它们浮动到彼此的左侧,可能是没有指定宽度控件仅使用 100% 宽度并导致后续控件垂直“堆叠”。

总的来说,我会完全避免使用表格,而只使用 DIV 标签。我发现它们比不得不摆弄表格、列和行更容易定位。

于 2012-09-03T15:07:45.510 回答