alexvw Ответов: 1

Откуда взялся этот javascriptc ?..


Всем привет.

Сценарий:
У меня есть простой GridView с ItemTemplateField, в котором есть флажок. Такой флажок подключен для запуска события onCheckedChanged, которое я почему-то игнорирую, срабатывает только при проверке, но не при снятии флажка. В свою очередь, каждое событие onCheckedChanged такого рода получает сигнал каким-то образом, где-то и срабатывает последовательно после того, как другой элемент управления запускает свое событие на стороне сервера.

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

<asp:GridView ID="Grid" runat="server" AutoGenerateColumns="False"  >
         <Columns>
             <asp:TemplateField Visible="false">
                 <ItemTemplate><asp:Label id="lbCesionID" runat ="server" Text='<%# Eval("idCesion") %>' /></ItemTemplate>
             </asp:TemplateField>
             <asp:TemplateField>
                 <ItemTemplate><asp:CheckBox runat="server" ID="chkSelected" AutoPostBack="true" OnCheckedChanged="GridCheckedChanged" Checked="false" /></ItemTemplate>
             </asp:TemplateField>
             <asp:BoundField DataField="DBSourceField" HeaderText="ThisHeader" ></asp:BoundField>
         </Columns>
     </asp:GridView>



Глядя на html-код, Я нашел, прикрепленный к моей галочки:

onclick="javascript:setTimeout('__doPostBack(\'ctl00$MainContent$ucCesionesDocs$Grid$ctl02$chkSelected\',\'\')', 0)"


И поскольку я понятия не имею, как он туда попал, я, безусловно, обвиняю его в моем препятствии.

Кто-нибудь знает, откуда берется такая штука? Где я мог бы добавить его, не зная. Если да, то как я могу от него избавиться?

Спасибо за вашу помощь.

Что я уже пробовал:

Перехват события OnRowDataBound, размещение флажка в строке сетки и удаление атрибута "onclick", но этот вызов javascript остается на месте.

Я нашел функцию setTimeout, определенную в JQuery, но, опять же, я не добавляю такую вещь (по крайней мере, нарочно).

1 Ответов

Рейтинг:
11

F-ES Sitecore

Это происходит из-за того, что вы установили AutoPostBack=true. Это означает, что форма будет отправлена, когда поле изменится, и это может быть сделано только с помощью javascript. asp.net фреймворк облегчает это, добавляя соответствующий js на вашу страницу.


alexvw

Большое спасибо за разъяснение; я не помню, чтобы когда-либо видел его раньше. Теперь пришло время найти истинную причину моей настоящей проблемы.

Ура!