Привязка данных ведет себя по-разному в текстовом поле и надписи - PullRequest
0 голосов
/ 06 мая 2011

У меня есть база данных со строкой, в которой "TEXTTEXT" находится внутри столбца "noteText" и null в этом столбце для другой строки. Если я запускаю запрос, который генерирует 1 строку, а затем запускаю другой запрос, содержащий 2 строки, Eval("noteText") возвращает различную информацию, когда помещается в TextBox, а не в Label. TextBox и Label были созданы специально для этого теста; на него нет ссылки в коде. Я думаю, что TextBox для строки 1 второго запроса каким-то образом вытягивает данные, использованные в строке 1 первого запроса.

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

Код файла aspx:

<asp:TemplateField HeaderText ="Notes" SortExpression="noteid">
    <ItemTemplate>
        STARTXX
        <asp:TextBox ID="AtxtNote" ViewStateMode="Disabled" runat="server"
            TextMode= "SingleLine" Width="260" Text='<%# Eval("noteText")  %>' />
        <br />
        <asp:Label ID="BtxtNote" runat="server" Width="260"
            Text='<%# Eval("noteText") %>' />
        <br />
        ENDXX
    </ItemTemplate>
</asp:TemplateField>

Исходный код на странице:

STARTXX
    <input name="ctl00$CPH1$gv$ctl02$AtxtNote" type="text"
            value="TEXTTEXT" id="ctl00_ContentPlaceHolder1_gv_ctl02_AtxtNote" 
            style="width:260px;" />
            <br />
    <span id="ctl00_CPH1_gv_ctl02_BtxtNote"
            style="display:inline-block;width:260px;"></span><br />
ENDXX

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

Я ожидал, что оба вызова Eval покажут пустую строку.

1 Ответ

0 голосов
/ 06 мая 2011

Мы исправили это, добавив больше вызовов к DataBind.

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

Одна из причинесть подозрение, что сообщения вызывали OnTextChanged события.

Я все еще недоволен этим;У меня нет полной уверенности, что я знаю, что происходит, хотя сейчас это работает.

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