2013-04-01 119 views
6

这是我的间距在这里?当标签包含文本时,间距很好,但是它们是空的,它们在每个标签之间有空白。为什么当标签包含空文本时会增加额外空间?间距搞砸

随着文本标签(我希望它看起来像):

随着标签没有内容(我怎么不希望它看起来像):

在后面侧的C#代码:

 // On page load 
     for (int i = 1; i < 10; i++) 
     { 
      string ID = i.ToString(); 
      PopulateLastNameLabel(ID); 
     } 


     protected void PopulateLastNameLabel(string ID) 
     { 
      Label lbl = new Label(); 
      lbl.Width = 70; 
      lbl.Height = 20; 
      lbl.Text = ""; 
      lbl.BackColor = System.Drawing.Color.Red; 
      lbl.ID = "lastname_" + ID; 
      pnlLastNameLabel.Controls.Add(lbl); 
     } 

在ASP.NET方面:

<asp:Table ID="tblDisplayTable" runat="server"> 
    <asp:TableRow> 
    <asp:TableCell> 
    <asp:Panel ID="pnlPrizeNumberLabel" runat="server" Width="80px"></asp:Panel> 
    </asp:TableCell> 
    <asp:TableCell HorizontalAlign="Center" VerticalAlign="Middle"> 
    <asp:Panel ID="pnlPrizeDropDownList" runat="server" Width="130px"></asp:Panel> 
    </asp:TableCell> 
    <asp:TableCell> 
    <asp:Panel ID="pnlNickNameLabel" runat="server" Width="70px"></asp:Panel> 
    </asp:TableCell> 
    <asp:TableCell> 
    <asp:Panel ID="pnlPrizeNicknameTextBox" runat="server" Width="125px"></asp:Panel> 
    </asp:TableCell> 
    <asp:TableCell> 
    <asp:Panel ID="pnlFirstNameLabel" runat="server" Width="70px"></asp:Panel> 
    </asp:TableCell> 
    <asp:TableCell> 
    <asp:Panel ID="pnlLastNameLabel" runat="server" Width="70px"></asp:Panel> 
    </asp:TableCell> 
    <asp:TableCell> 
    <asp:Panel ID="pnlEmailAddressLabel" runat="server" Width="140px"></asp:Panel> 
    </asp:TableCell> 
    <asp:TableCell> 
    <asp:Panel ID="pnlAddButton" runat="server" Width="40px"></asp:Panel> 
    </asp:TableCell> 
    </asp:TableRow> 
    </asp:Table> 
+3

使用 要么在代码后面或在html中保留空白? – adaam

回答

2

如果我理解你的问题正确的话,你需要下面的CSS(删除代码高度后面)。

每个控件都存在于自己的表格单元中,所以它们不会水平对齐。所以你需要为每个控件明确设置高度。

<style type="text/css"> 
    td div { margin-right: 5px; } 
    td div input {border: 1px solid #828282; height: 21px; } 
    td div span { height: 25px; line-height: 25px; } 
</style> 

<asp:Table ID="tblDisplayTable" runat="server" CellPadding="0" CellSpacing="0"> 
    <asp:TableRow> 
     <asp:TableCell> 
      <asp:Panel ID="pnlPrizeNumberLabel" runat="server" Width="80px"> 
      </asp:Panel> 
     </asp:TableCell> 
     <asp:TableCell HorizontalAlign="Center" VerticalAlign="Middle"> 
      <asp:Panel ID="pnlPrizeDropDownList" runat="server" Width="130px"> 
      </asp:Panel> 
     </asp:TableCell> 
     <asp:TableCell> 
      <asp:Panel ID="pnlNickNameLabel" runat="server" Width="70px"> 
      </asp:Panel> 
     </asp:TableCell> 
     <asp:TableCell> 
      <asp:Panel ID="pnlPrizeNicknameTextBox" runat="server" Width="125px"> 
      </asp:Panel> 
     </asp:TableCell> 
     <asp:TableCell> 
      <asp:Panel ID="pnlFirstNameLabel" runat="server" Width="70px"> 
      </asp:Panel> 
     </asp:TableCell> 
     <asp:TableCell> 
      <asp:Panel ID="pnlLastNameLabel" runat="server" Width="70px"> 
      </asp:Panel> 
     </asp:TableCell> 
     <asp:TableCell> 
      <asp:Panel ID="pnlEmailAddressLabel" runat="server" Width="140px"> 
      </asp:Panel> 
     </asp:TableCell> 
     <asp:TableCell> 
      <asp:Panel ID="pnlAddButton" runat="server" Width="40px"> 
      </asp:Panel> 
     </asp:TableCell> 
    </asp:TableRow> 
</asp:Table> 

protected void Page_Load(object sender, EventArgs e) 
{ 
    for (int i = 1; i < 10; i++) 
    { 
     string ID = i.ToString(); 
     TextBoxLabel(ID); 
     PopulatePrizeNicknameLabel(ID); 
     PopulateFirstNameLabel(ID); 
     PopulateLastNameLabel(ID); 
    } 
} 

protected void TextBoxLabel(string ID) 
{ 
    TextBox lbl = new TextBox(); 
    lbl.Width = 65; 
    lbl.Text = ""; 
    lbl.ID = "TextBox_" + ID; 
    lbl.Text = ID; 
    pnlNickNameLabel.Controls.Add(lbl); 
} 

protected void PopulatePrizeNicknameLabel(string ID) 
{ 
    Label lbl = new Label(); 
    lbl.Width = 125; 
    lbl.Text = ""; 
    lbl.BackColor = System.Drawing.Color.Green; 
    lbl.ID = "PrizeNickname_" + ID; 
    lbl.Text = ID; 
    pnlPrizeNicknameTextBox.Controls.Add(lbl); 
} 

protected void PopulateLastNameLabel(string ID) 
{ 
    Label lbl = new Label(); 
    lbl.Width = 70; 
    lbl.Text = ""; 
    lbl.BackColor = System.Drawing.Color.Red; 
    lbl.ID = "lastname_" + ID; 
    lbl.Text = ID; 
    pnlLastNameLabel.Controls.Add(lbl); 
} 

protected void PopulateFirstNameLabel(string ID) 
{ 
    Label lbl = new Label(); 
    lbl.Width = 70; 
    lbl.Text = ""; 
    lbl.BackColor = System.Drawing.Color.Blue; 
    lbl.ID = "firstname_" + ID; 
    lbl.Text = ID; 
    pnlFirstNameLabel.Controls.Add(lbl); 
} 

enter image description here

我喜欢在一个时间,而不是在一次一列创建控件一行,但不是OP。