Спасибо за совет, это мне действительно помогло в GridView и ListView (правда, пришлось написать 98%, т.к. иначе правый край как-то странно наползает на соседний столбец. Но это уже мелочи).
Но я не совсем это имел в виду. А вот что. Есть, например, такой текст:
<table cellpadding="4">
<tr>
<td style="text-align: right">
<asp:Label ID="Label1" runat="server" Text="Label">Короткий текст</asp:Label>
</td>
<td>
<asp:TextBox ID="TextBox1" runat="server">Текст</asp:TextBox>
</td>
</tr>
<tr>
<td style="text-align: right">
<asp:Label ID="Label2" runat="server" Text="Label">Длинный текст</asp:Label>
</td>
<td>
<asp:TextBox ID="TextBox2" runat="server" Width="100%">Какой-нибудь более длинный текст, чем тот, что выше</asp:TextBox>
</td>
</tr>
</table>
Вторая строка отображается нормально. А вот как заставить первую (поле TextBox1) отображаться по длине слова "Текст", которое в этом поле? Если поставить там 100%, получится первая строка по длине равна второй (полю TextBox2). Если ничего не ставить - отображается какая-то всегда одинаковая длина по умолчанию независимо от длины текста в поле.
Если это нельзя (вдруг) декларативно описать - можно ли хотя бы программно?