Элемент управления Formview с таблицей, элементы управления в tr, установленные для сервера runat, не вставляются - PullRequest
1 голос
/ 09 августа 2011

Вот странная ситуация.В моем FormView элементе управления я поместил <table> для макета.Со строками (<tr>) я добавил ID s и runat="server".Вставка сохранила только некоторые данные, которые я считал странными.Я посмотрел, почему эти поля сохранены, а другие нет, и единственное отличие заключалось в том, что я не добавил ID или runat="server" к <tr> с.Удаление «runat» позволило вставке работать нормально.

Я предполагаю, что это как-то связано с тем, как строки инициализируются по сравнению с инициализацией элемента управления или FormView.Есть мысли, почему это происходит?Сейчас я удаляю ID s из строк таблицы.

1 Ответ

2 голосов
/ 22 декабря 2011

Вы на правильном пути в своем мышлении.

FormView смотрит только на элементы управления верхнего уровня. Если вы встраиваете один из ваших предполагаемых элементов управления вводом в другой серверный элемент управления, FormView не видит его (он был скрыт внутри внешнего элемента управления). Даже в вашем программном коде вам придется использовать метод FindControl, чтобы получить тег ввода со стороны сервера <tr>

Таким образом, если у вас было это:

<tr ID="row1" runat="server">
    <asp:TextBox ID="myTB" runat="server">12</asp:TextBox>
</tr>

Единственное, что видит FormView, - это элемент верхнего уровня (<tr>). Вы бы даже не увидели TextBox в своем коде , если бы не сделали это:

TextBox myTB = (TextBox)row1.FindControl("myTB");

Поэтому я бы предложил исключить теги "runat" и "ID" из элементов <tr>; поскольку они предназначены только для демонстрации, они вам на самом деле не нужны на стороне сервера.

Надеюсь, это немного прояснит ситуацию.

...