【问题标题】:Adding space BETWEEN cells in TableCell()在 TableCell() 中的单元格之间添加空格
【发布时间】:2010-04-22 14:57:34
【问题描述】:

我的代码如下。我想在 tableCell() 中的单元格之间添加空格 相当于

<td></td>&nbsp;&nbsp;<td></td>

我不是在寻找单元格填充或单元格间距,因为它们都在左侧单元格边框和左侧表格边框(墙)之间添加了空间;我想在两个 CELLS 之间添加空格,而不是表格和单元格;

protected void Page_Init(object sender, EventArgs e)
{
    Table tb = new Table();
    tb.ID = "tb1";

    for (int i = 0; i < iCounter; i++)
    {
        TableRow tr = new TableRow();
        TextBox tbox = new TextBox();
        tbox.ID = i.ToString();

        TableCell tc = new TableCell();
        tc.Controls.Add(tbox);
        tr.Cells.Add(tc);
        tb.Rows.Add(tr);
    }
    pnlScheduler.Controls.Add(tb);
}

有什么想法吗?

【问题讨论】:

  • 听起来您正在寻找确切的单元格间距...
  • 但是 cellspacing 在左侧单元格的左边框和左侧表格之间添加了空间。我不想要那个;
  • 在下面查看我的答案——尝试添加一个带有单元格间距的“子”表

标签: c# asp.net


【解决方案1】:

试试这个:

 TableCell tc = new TableCell();
    HtmlGenericControl div = new HtmlGenericControl("div");
    div.Style.Add("padding-left", "5px");
    div.Style.Add("padding-right", "5px");

    div.Controls.Add(tbox);

    tc.Controls.Add(div);
    tr.Cells.Add(tc);
    tb.Rows.Add(tr);

【讨论】:

  • 您提供的代码在单元格和表格之间添加了填充。不是我要找的;
  • 对不起,我已经编辑了正确答案的帖子,请检查一下
【解决方案2】:

另一种可能是这样(我修改了您的代码并添加了一个标签,您可以将其添加到每个“tc.Controls.Add(tbox);”中)

    protected void Page_Init(object sender, EventArgs e) 
{ 
    Table tb = new Table(); 
    tb.ID = "tb1"; 

    for (int i = 0; i < iCounter; i++) 
    { 
        TableRow tr = new TableRow(); 
        TextBox tbox = new TextBox(); 
        TextBox tLabel = new Label();
        tbox.ID = i.ToString(); 

    tLabel.width = 10;

        TableCell tc = new TableCell(); 
        tc.Controls.Add(tbox);
    tc.Controls.Add(tLabel);
        tc.Controls.Add(tbox);
    tc.Controls.Add(tLabel);
        tc.Controls.Add(tbox);
    tc.Controls.Add(tLabel);
        tr.Cells.Add(tc); 
        tb.Rows.Add(tr); 
    } 
    pnlScheduler.Controls.Add(tb); 
}

【讨论】:

    【解决方案3】:

    *编辑

    我为边距道歉,我认为边距不可能,但是我能够创建一个可以应用于中间单元格的 css,并在左侧和右侧为它们提供填充。

    但要解决第一个和最后一个元素不会靠在桌子墙上的事实,您必须仅将类应用于中间的 td

    css代码示例

    table
    {
    border:1px solid black;
    border-collapse: collapse;
    table-layout: fixed;
    }
    td.middle
    {
    border:1px solid black;
    padding-left: 20px;
    padding-right: 20px;
    }
    

    然后您的中间 td 将使用 &lt;td class="middle"&gt;&lt;/td&gt; 创建

    但是,将这种类型的代码转换为 c# 我不完全确定。我将继续研究如何将此类仅应用于特定元素,但最好的选择是创建一个标志来检查元素以确保它们不是表中的第一个或最后一个,除非你添加手动添加它们,然后您只需根据需要手动添加类。

    但是我可能会建议,如果这是用于页面布局,最好让 css 为您完成工作,而不是使用表格设计。但如果是以表格格式显示数据,那没关系,我什么也没说。

    希望这会有所帮助。如果我发现任何其他内容,将发布。

    【讨论】:

    【解决方案4】:

    您可以随时添加所需的“空”单元格。

    【讨论】:

      【解决方案5】:

      为了在表格单元格之间留出空间,我们必须使用表格的 cellpadding 和 cellspacing 属性。

      行中的 X 被替换为单元格之间所需的像素数。

      行中的 X 被替换为文本和单元格边缘之间所需的像素数。

      【讨论】:

        【解决方案6】:

        当您准备好添加两个具有此间距的单元格时,请改为创建一个表格;一行和两个 td 之类的:

        <table cellspacing="2"><tr><td>stuff</td><td>more stuff></td></tr></table>
        

        【讨论】:

        • 您能像我的示例代码一样将其转换为代码隐藏语法吗?问题是我似乎无法将 html 脚本添加到我的 tc.Controls.Add(tbox);语法
        【解决方案7】:

        对表格的 td 应用左边距(每行的最后一个除外)。 您可以通过分配一个公共类来做到这一点,或者通过应用一个仅将边距重置为最后一个 td 的类。

        您也可以使用 jQuery 并注入边距,但仅通过 css 执行此操作更简洁。

        【讨论】: