попытайтесь использовать col
пример s
<table>
<col style="padding-right:20px;" />
<col style="padding-right:30px;" />
<col />
<tr>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
</tr>
</table>
, седла также поддерживают классы:)
надежда это помогает
РЕДАКТИРОВАНИЕ Darko
: Для разъяснения col
элемент, который, как объявляют наверху таблицы, влиял на все столбцы. Первый элемент седла будет влиять на первый столбец, второе седло = второй столбец и так далее. Они могут быть сгруппированы в colgroups, если Вы хотите присвоить тот же стиль больше чем одному столбцу.
EDIT2: еще После некоторого исследования оказывается, что единственные надежные стили, которые можно установить на col
элемент:
Никакое поле или дополнение. Педераст! Был бы, устанавливая ширину столбцов, явно решают Вашу проблему?
Дерево выражений настолько мощное, что позволяет обрабатывать код как данные . Пользователи привыкли накапливать данные, сохранять их и возвращаться к ним позже.
Деревья выражений позволяют делать то же самое с кодом. Например, вы можете взять введенные пользователем данные (флажки, диапазоны номеров и т. Д.) И преобразовать их в дерево выражений. Затем это дерево выражения может быть выполнено или сохранено для дальнейшего использования. Очень круто.
Подумайте о практических применениях отчетов, таких как создание и сохранение фильтров данных и сопоставлений данных.
Вы можете использовать деревья выражений для преобразования языка домена в исполняемый код.
Решение, ищущее проблему, а?
Деревья выражений позволяют представить код как трансформируемую структуру данных, поэтому они идеально подходят для преобразования между языками. Linq To SQL является наиболее мощным в настоящее время.
Другое использование помимо DSL (которое является преобразованием) - это распараллеливание (которое является разделением), и примером в этом пространстве является PLINQ.
У меня был хороший опыт их преобразования AST моего предметно-ориентированного языка в деревья выражений. С помощью адаптера дерева ANTLR довольно просто создать дерево выражений непосредственно из грамматики.
Деревья выражений .NET 4.0 также являются основой для DLR AST
см. Этот пост: http: // codebetter. Это отличный вариант использования.
Вы можете использовать дерево выражений как построитель кода с более высоким уровнем абстракции, чем сборщик, и быстрее, чем CodeCompiler. Вот некоторые доказательства концепции, которую я использовал, чтобы убедить нашу команду использовать их в качестве замены CodeCompiler.
[TestClass]
public class WhenINeedToAccessPropertiesByNameHavingATypeReference
{
public class SomeCategoryData
{
public DateTime CreatedDate { get; set; }
}
[TestMethod]
public void ICanDoThatWithAnExpressionAndItPerformsWell()
{
// INIT
var someCategoryData =
Enumerable.Range(1970, 100).Select(year =>
new SomeCategoryData { CreatedDate = new DateTime(year, 1, 1) }).Cast<object>();
var t = typeof(SomeCategoryData); // or it can be: t = someCategoryData.First().GetType();
var compiled = Stopwatch.StartNew();
// ACT
var filter = AccessPropertyByNameInCompiledMannerSomehow(t, "CreatedDate");
// ASSERT
Trace.WriteLine(string.Format("compiled in: {0}", compiled.Elapsed));
Assert.IsTrue(compiled.ElapsedMilliseconds < 3, "compiles fast enough");
var executed = Stopwatch.StartNew();
// ACT
List<object> result = null;
for (var i = 0; i < 10000; i++)
{
result = someCategoryData.Where(d => filter(d, new DateTime(2000, 1, 1), new DateTime(2009, 1, 1)))
.ToList();
}
executed.Stop();
Trace.WriteLine(string.Format("executed in: {0}", executed.Elapsed));
// ASSERT
Assert.AreEqual(10, result.Count, "insure compiled code actually works");
Assert.IsTrue(executed.ElapsedMilliseconds < 300, "runs fast enough");
}
private static Func<object, DateTime, DateTime, bool>
AccessPropertyByNameInCompiledMannerSomehow(Type t, string fieldToFilterBy)
{
var objectParameter = Expression.Parameter(typeof(object), "p");
var instance = Expression.Convert(objectParameter, t);
var lower = Expression.Parameter(typeof(DateTime), "l");
var upper = Expression.Parameter(typeof(DateTime), "u");
var composite = Expression.Lambda<Func<object, DateTime, DateTime, bool>>(
Expression.And(
Expression.LessThanOrEqual(
lower,
Expression.PropertyOrField(instance, fieldToFilterBy)
),
Expression.GreaterThanOrEqual(
upper,
Expression.PropertyOrField(instance, fieldToFilterBy)
)
), objectParameter, lower, upper
);
return composite.Compile();
}
}
Быстрый ответ: «Нет, теперь это не только для поставщиков LINQ». Во-первых, деревья выражений были расширены средой выполнения динамического языка для поддержки динамических языков. По сути, если вы хотите перенести свой собственный динамический язык на .NET (как это сделали IronPython и IronRuby), вам придется использовать деревья выражений. Хорошо, не так уж много людей владеют собственным языком. Какие еще варианты использования? Один из них - генерировать динамический код во время выполнения. У меня есть пример: Создание динамических методов с деревьями выражений в Visual Studio 2010 . В нем объясняется, как вы можете использовать ET вместо генерации MSIL для создания динамических методов. На самом деле, есть несколько вариантов использования деревьев выражений вне LINQ даже в .NET 3.5, но эти сообщения еще не написаны.
У меня есть несколько примеров здесь
(извините за неправильное форматирование кода)