.net текстовое поле в gridview, не подозревая при обратной передаче изменения цвета фона из клиентского JavaScript - PullRequest
0 голосов
/ 21 сентября 2010

В сетке просмотра у меня есть следующее поле шаблона, содержащее текстовое поле

<asp:TemplateField ShowHeader="true" ItemStyle-HorizontalAlign="left" ItemStyle-VerticalAlign="Middle" ItemStyle-Width="106px" HeaderText="Actual Order">
                            <ItemTemplate>                                
                                <asp:TextBox runat="server" ID="txtActualOrder" Columns="4" Text='<%#Eval("QtyOrdered")%>' 
                                    CausesValidation="true" onBlur='validate(...)'/>                                       
                            </ItemTemplate>
                        </asp:TemplateField>

Когда пользователь выделяет ячейку, я проверяю количество, введенное в текстовое поле, и меняю цвет фона текстового поля на желтый, если он действителен, красный, если недействителен (в javascript).

Затем у меня есть кнопка сохранения, которая отправляет сообщение обратно на сервер и просматривает сетку.Я могу получить вновь введенное текстовое значение из текстового поля, однако я не знаю, что ячейка изменила свой задний цвет на желтый.VS указывает, что ячейка по-прежнему является значением по умолчанию белого цвета.Оператор if ниже всегда ложен, и отладчик VS говорит, что ячейка все еще белая.Кто-нибудь знает, почему при обратной передаче я могу получить новое текстовое значение, но не новый задний цвет ячейки?Как лучше всего пометить мою запись gridviewrow как авторизованную и затем передать это значение на сервер при обратной передаче? Пожалуйста, не подвергайте сомнению мою архитектуру проверки чего-либо на стороне клиента как не лучшую практику.Это требование клиента.

<code>
foreach (GridViewRow row in gvProducts.Rows)
                {
TextBox tbActualOrder = (TextBox)row.Cells[3].FindControl("txtActualOrder");
                        if (tbActualOrder != null)
                        {
if (tbActualOrder.BackColor != System.Drawing.Color.FromName("yellow"))
                                {}
}
}

1 Ответ

1 голос
/ 21 сентября 2010

Цвет элемента управления не является частью представленных данных, когда происходит POST.Вам необходимо создать дочернее скрытое поле, в котором хранятся действительные / недействительные данные.Что-то вроде <input type="hidden" name="txtActualOrder_ValidationResults"/>.

Конечно, проверка клиентской стороны для обновления пользовательского интерфейса, а затем отбрасывание результатов этой проверки и повторная обработка на стороне сервера - это правильный способ выполнить проверку.

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