Изменение стиля кнопки в виде сетки при нажатии - PullRequest
0 голосов
/ 23 апреля 2019

Я использую сетку, заполненную 7 кнопками и 2 полями в каждой строке. Я пытаюсь изменить цвет моего поля кнопок при каждом нажатии и выполняю обновление базы данных с помощью sp. Я попытался получить это на rowcommand, но с нулевой ссылкой для объекта кнопки. Я также попытался найти некоторые ссылки на этот предмет, но только что нашел элементы в полях шаблонов с кнопками внутри, и я хотел бы использовать поле кнопок, а не шаблон.

Вот пример строки моего вида:


<asp:ButtonField DataTextField="datechg_1" HeaderText="Date chg 1" Text="Btn1" ButtonType="Button" CommandName="chgColor"></asp:ButtonField>
<asp:ButtonField DataTextField="datechg_2" HeaderText="Date chg 2" Text="Btn2" ButtonType="Button" CommandName="chgColor"></asp:ButtonField>
<asp:ButtonField DataTextField="datechg_3" HeaderText="Date chg 3" Text="Btn3" ButtonType="Button" CommandName="chgColor"></asp:ButtonField>

и вот код строки команды, выбрасывающий нулевую ссылку:

 protected void grid_date_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandName=="chgColor")
            {
                Button btn = e.CommandSource as Button; << null reference here -_-                
                var color = btn.Style.Value;
                switch (color)
                {
                    case "background-color:red;":
                        btn.Style["background-color"] = "rgb(0,200,83)";
                        break;
                    case "background-color:blue;":
                        btn.Style["background-color"] = "rgb(242,101,34)";
                        break;
                    case "background-color:green;":
                        btn.Style["background-color"] = "rgb(229,57,53)";
                        break;
                }
            }
        }

Полагаю, цвет переключателя не очень хорош, но сейчас это не проблема. Я хотел бы знать, как нажать кнопку. Спасибо за вашу помощь:)

1 Ответ

0 голосов
/ 23 апреля 2019

Добавление события OnRowCommand в Gridview.

 <asp:GridView OnRowCommand="GridView1_RowCommand">
        <Columns>
            <asp:ButtonField />
        </Columns>
  </asp:GridView>

и класс

 protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
 {
      //Response.Write(e.CommandArgument);        
 }
...