2010-04-22 2 views
1

Мой код ниже. Я хочу, чтобы добавить пространство между клетками в TableCell() что-то эквивалентДобавление пространства МЕЖДУ ячейками в TableCell()

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

Я не ищу CELLPADDING или CELLSPACING, потому что они оба добавить пространство между границей левой ячейки и границы левого стола (стены); Я хочу добавить пробел между двумя 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); 
} 

Любые идеи?

+0

это звучит, как вы смотрите для точно cellpacing ... –

+0

, но cellpacing добавляет пробел между левой границей левой ячейки и левой таблицей. Я не хочу этого; – user279521

+0

см. мой ответ ниже - попробуйте добавить «под» таблицу с интервалом между ячейками –

ответ

1

Альтернативой может быть это (я изменил код и добавил ярлык, который вы можете добавить альтернативный к каждому «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); 
} 
+0

Это было хорошее решение. Огромное спасибо – user279521

0

Вы всегда можете добавить «пустые» ячейки желаемого.

0

Для обеспечения пространства между ячейками таблицы мы должны использовать свойство cellpadding и cellpacing.

< таблица CELLSPACING = "1" CELLPADDING = "2" > </таблица >

< Таблица CELLSPACING = "X" >

Х в строке, заменяется числом пиксели, которые вы хотите между ячейками.

< ТАБЛИЦА CELLPADDING = «X» >

Х в строке, заменяется количеством пикселей вы хотите между текстом и краем ячейки.

0

Когда вы будете готовы добавить две ячейки с этим интервалом, создайте вместо этого таблицу; с одной строкой и два тд как:

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

вы можете преобразовать это в синтаксис codebehind, как у меня есть пример кода? Проблема в том, что я не могу добавить html-скрипт в мой tc.Controls.Add (tbox); синтаксис – user279521

+0

попробуйте yourcontrol.InnerHtml + = «мой код здесь»; –

3

Попробуйте это:

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); 
+0

код, который вы предоставили, добавляет отступы между ячейкой и таблицей. Не то, что я ищу; – user279521

+0

Извините, что вы правы, я уже редактировал сообщение с правильным ответом, пожалуйста, проверьте это – alejandrobog

+0

Я пробовал ваш код. Нет текстовых полей. – user279521

0

Нанести левый край на Т.Д. стола (за исключением последнего в каждой строке). Вы можете сделать это, присвоив общий класс или применив класс, который сбросит маржу только до последнего td.

Вы можете использовать jQuery и ввести поле ввода, но делать это через css только чище.

1

* редактировать

Мои извинения за края, я не думаю, что это возможно с полями, однако я был в состоянии создать CSS, которые могут быть применены к середине клетки дают им отступы на обоих слева и правые.

но обойти тот факт, что первые и последние элементы не вытолкнуть к стене стола вы должны применить класс только среднего ТД

пример 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 class="middle"></td>

однако преобразовать этот тип кода на C# я не совсем уверен.Я буду продолжать рассматривать, как применить этот класс только к определенным элементам, но лучше всего будет создать флаг, который проверяет элемент, чтобы убедиться, что они не являются первыми или последними в таблице, если вы не добавляете их вручную, тогда вы просто добавляете класс вручную по мере необходимости.

Однако могу ли я предположить, что если это для макета страницы, то вам лучше работать css, вместо того, чтобы использовать дизайн таблицы. Но если это показать данные в табличном формате, тогда неважно, я ничего не сказал.

Надеюсь, это поможет. опубликует, если найду что-нибудь еще.

+0

, можете ли вы предоставить образец синтаксиса, который я могу использовать в блоке codebehind? – user279521

+0

@ user279521 извините за длинный ответ, вышел на обед. Если вы перейдете на http://www.w3schools.com/css/css_reference.asp и http://www.w3schools.com/css/pr_margin-left.asp, они объяснят разные элементы, которые имеет таблица. также http://www.w3.org/TR/CSS2/tables.html дает вам всесторонний взгляд на дизайн таблицы. В скором времени я отправлю код. –

+0

@ user279521 отправленный код может быть изменен по мере необходимости. –

Смежные вопросы