0

runat=serverの要素を持つhtmlテーブルがあります。コードビハインドからその中にいくつかのユーザーコントロールをロードしています。

    <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 に答える