альтернатива в .Net построению таблиц / TR / TD вручную? - PullRequest
3 голосов
/ 04 июня 2010

У меня есть куча кода, который выглядит следующим образом:

if (stateTax > 0)
{
    tr = new TableRow();
    tbl.Rows.Add(tr);
    td = new TableCell();
    td.CssClass = "stdLabel";
    td.Text = "NY State Tax";
    tr.Cells.Add(td);

    td = new TableCell();
    td.Text = string.Format("{0:C}", stateTax);
    td.CssClass = "justRight";
    tr.Cells.Add(td);
}

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

Обычно я пишу вспомогательную функцию, которая лаконична, но безобразна:

if (stateTax > 0)
    MakeRow(tbl, "NY State Tax", "stdLabel", 
                 string.Format("{0:C}", stateTax), "justRight");

А теперь я думаю: разве я не делал это раньше 100 раз? Разве нет более современного способа?

Просто чтобы быть в явном виде: это целый список разных меток и значений. Они не поступают из какого-либо конкретного источника данных, и правила, когда строки должны подавляться, различаются. В этом примере есть только два столбца, но у меня есть другие места с более.

Отредактировано, чтобы подчеркнуть: этот тип данных не естественно подходит для Repeater или GridView.

Я использую Повторитель для Товаров в ShoppingCart, это простой список. Это не такой список, это то, что приходит после : государственная пошлина, городской налог, доставка, скидки, специальные инструкции, подарочные этикетки и пояснительный шаблон. Весьма разное, часто необязательное, но должна быть какая-то организационная структура или она выглядит неправильно.

Я мог бы создать какой-нибудь собственный Список и выгружать все, чтобы я мог использовать Repeater, а иногда я делаю это; но это все еще хак.

Полагаю, я мог бы сделать каждый элемент Control с Visible = false, а затем показать, что нужно во время выполнения. Но это все еще похоже на большое количество кода для размещения небольшого статического текста.

Ответы [ 4 ]

6 голосов
/ 04 июня 2010

Вы можете посмотреть на GridView в ASP.NET.

2 голосов
/ 04 июня 2010

По возможности, избегайте связывать логику кода позади с презентационными материалами. В этом конкретном случае вы можете достичь той же цели с помощью повторителя

Вы можете взглянуть на довольно простой пример здесь ...

http://articles.sitepoint.com/article/asp-net-repeater-control

0 голосов
/ 04 июня 2010

Я могу думать о двух способах, которыми вы могли бы сделать то, что вы хотите сделать ...

  1. Создайте пользовательский элемент управления или пользовательский элемент управления и запишите свои данные в свойствах, содержащихся в.

  2. Просто перетащите элемент управления Literal на страницу, а затем заполните его всем, что вы захотите, когда будете писать свою страницу. Литерал в точности, как он говорит, буквальный. Если вы установите его свойство text в ... "hello world", это именно то, что войдет в html, и когда страница будет отображена, вы увидите таблицу из одной строки, содержащую текст "hello world". *

0 голосов
/ 04 июня 2010

Возможно, вы захотите изучить привязку к элементу управления GridView.

Однако я больше никогда не использую этот шаблон. Теперь все мои сетки основаны на JavaScript и используют Ajax для извлечения данных для загрузки в них.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...