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

1 に答える 1

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

ここに画像の説明を入力

一度に 1 列ではなく、一度に 1 行ずつコントロールを作成することを好みますが、それは OP ではありません。

于 2013-04-01T19:03:56.583 に答える