ZohaibRazaTheDProgrammer Ответов: 1

Свойство GridView backgroundcolor не сохраняется при нажатии кнопки ссылка в поле шаблон.


Привет Сообщество,

У меня есть GridView на жерехе .Чистая веб-форма. Это GridView привязано к Sqldatasource его. Все столбцы Шаблон. GridView находится внутри элемент UpdatePanel. Одна из колонок Выпадающий список HTML-разметка для этого выпадающего списка выглядит следующим образом:

<asp:DropDownList ID="DropDownList1" onchange="buildDropDown(this)" runat="server" Text='<%# Bind("[r_cal_M]") %>'>
    <asp:ListItem></asp:ListItem>
    <asp:ListItem>2016-09</asp:ListItem>
    <asp:ListItem>2016-10</asp:ListItem>
    <asp:ListItem>2016-11</asp:ListItem>
    <asp:ListItem>2016-12</asp:ListItem>
</asp:DropDownList>


Код для функции buildDropDown() выглядит следующим образом:

function buildDropDown(obj) {
    var status = obj.options[obj.selectedIndex].value;
    var row = obj.parentNode.parentNode;
    var rowIndex = row.rowIndex - 1;

    var ddlReason = row.cells[1].getElementsByTagName('SELECT')[0];

    switch (status) {
        case "":
            row.style.backgroundColor = "rgb(255, 255, 255)";
            row.style.color = "rgb(0, 0, 0)";
            break;
        case "2016-09":
            row.style.backgroundColor = "rgb(198, 239, 206)";
            row.style.color = "rgb(0, 97, 0)";
            break;
        case "2016-10":
            row.style.backgroundColor = "rgb(1255, 199, 206)";
            row.style.color = "rgb(156, 0, 6)";
            break;
        case "2016-11":
            row.style.backgroundColor = "rgb(255, 235, 156)";
            row.style.color = "rgb(156, 101, 0)";
            break;
        case "2016-12":
            row.style.backgroundColor = "rgb(255, 255, 255)";
            row.style.color = "rgb(0, 0, 0)";
            break;
    }
}


Приложение работает нормально, но когда я нажимаю кнопку Обновить в GridView, цвет строки возвращается к исходному.

Как я могу это исправить?

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

Добавлена функция JavaScript в OnClientClick кнопки Update (для тестирования с одной из схем цветового кодирования):

function Validate(lnkUpdate) {

    var row = lnkUpdate.parentNode.parentNode; 


    row.style.backgroundColor = "rgb(255, 235, 156)";
    row.style.color = "rgb(156, 101, 0)";


    return true;
}

Тем не менее цвет возвращается к исходному (белый фон с черным фоном)

ZurdoDev

У вас есть код, который устанавливает фон на белый. Я не совсем понимаю, в чем проблема.

ZohaibRazaTheDProgrammer

Строка должна быть окрашена в цвет по умолчанию только тогда, когда значения в выпадающем списке равны "" или "2016-12". Почему цвет меняется на стандартный, когда я нажимаю кнопку Обновить.

1 Ответов

Рейтинг:
1

Tadit Dash (ତଡିତ୍ କୁମାର ଦାଶ)

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


ZohaibRazaTheDProgrammer

@Tadid Dash я не хочу вызывать RowDataBound из OnClick или OnClientClick, потому что уже есть одна функция. Есть ли способ, которым я могу вызвать RowDataBound внутри из Validate (lnkUpdate)?

Tadit Dash (ତଡିତ୍ କୁମାର ଦାଶ)

Это событие не вызывается явно. Всякий раз, когда вы выполняете привязку данных для обновления сетки, она автоматически запускается для каждой строки.

ZohaibRazaTheDProgrammer

@Tadit Dash добавление кода для изменения цвета строки в событии RowDataBound создает еще одну проблему. Теперь я не могу изменить цвет строки с помощью выпадающего списка. Пожалуйста, подскажите, как я могу поделиться с вами всем кодом, чтобы вы могли запустить его на своем локальном компьютере и проверить?

Tadit Dash (ତଡିତ୍ କୁମାର ଦାଶ)

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

ZohaibRazaTheDProgrammer

@Tadit Dash когда я добавляю точку останова, она проходит через бесконечный цикл в ScripResource.axd

Tadit Dash (ତଡିତ୍ କୁମାର ଦାଶ)

Как вы отлаживаете? Просто попробуйте использовать инструменты разработчика в chrome/firefox.