Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: Web, ASP.NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
fromdd
3 / 3 / 0
Регистрация: 19.03.2011
Сообщений: 311
1

Как создать обработчик для button и правильно его вызвать?

31.08.2014, 10:53. Просмотров 1089. Ответов 11
Метки нет (Все метки)

aspx генерирует html с множеством кнопок, кнопки создаются через <button></button>. как можно обработать нажатие этих кнопок?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.08.2014, 10:53
Ответы с готовыми решениями:

Как правильно создать и вызвать конструктор для массива объектов?
Сам класс class Planet{ public: string name; protected: double diameter; private: int...

Как проверить, если ли у кнопки обработчик клика, и как его вызвать?
С добрым днём! Подскажите, пожалуйста, как, во-первых, определить назначен ли какой-нибудь...

Как проверить, если ли у кнопки обработчик клика, и как его вызвать?
С добрым днём! Подскажите, пожалуйста, как, во-первых, определить назначен ли какой-нибудь...

Как создать событие или вызвать метод при нажатии на экземпляр объекта (Button)?
List&lt;Button&gt; but = new List&lt;Button&gt;(); private void button1_Click(object sender, EventArgs...

Как создать Button в Form-e и сохранить его, так чтобы при следующем открытии Form кнопка, т.е. Button существовал на форме?
Доброе время суток! У меня возник такой вопрос. Как создать Button в Form-e и сохранить его, так...

11
Cyberatino2
56 / 56 / 22
Регистрация: 24.09.2013
Сообщений: 172
31.08.2014, 12:11 2
Привет.
Тебе нужно записать в запрос перед его отправкой на сервер, какой-то признак, говорящий, какая именно кнопка кликнута. Признак - это параметр запроса ключ-значение вида - "htmlBtnClickedId=btn228". Например:
HTML5
1
2
3
<button id="btn228" onclick="$('htmlBtnClickedId').val(this.id);form.submit()">Make Good like 228</button>
<!-- много кнопок прощуено -->
<input type="hidden" id="htmlBtnClickedId" />
JS может не работать, принцип главное.
На сервере проверяешь Request.Form["htmlBtnClickedId"] == "btn228".
0
fromdd
3 / 3 / 0
Регистрация: 19.03.2011
Сообщений: 311
31.08.2014, 16:32  [ТС] 3
я про то как создать обработчик и правильно его вызвать
0
HF
188 / 177 / 58
Регистрация: 09.09.2011
Сообщений: 667
Завершенные тесты: 19
31.08.2014, 17:25 4
Цитата Сообщение от fromdd Посмотреть сообщение
я про то как создать обработчик и правильно его вызвать
- добавить в ASPX разметке Button
- в свойствах кнопки добавить свойство OnClick и прописать там название метода
- создать метод в файле .aspx.cs
запустить проект, нажать кнопку, метод выполнится

Метод 2:
воспользоваться гуглом и msdn документацией
http://msdn.microsoft.com/ru-ru/libr...v=vs.110).aspx
0
31.08.2014, 17:25
fromdd
3 / 3 / 0
Регистрация: 19.03.2011
Сообщений: 311
01.09.2014, 10:05  [ТС] 5
написал обработчик в
C#
1
2
3
4
5
6
7
8
9
<script runat="server">
 
    protected void doit(Object sender, EventArgs e)
    {
        Response.Write("helloworld");
      
    }
 
</script>
кнопки создаю в цикле так
C#
1
Response.Write("<td> <button id=\"1\" runat=\"server\" onserverclick =\"doit\"> кнопка </button> </td> </tr>");
все создается, но нажатие не обрабатывается
0
HF
188 / 177 / 58
Регистрация: 09.09.2011
Сообщений: 667
Завершенные тесты: 19
01.09.2014, 12:27 6
Ого. Это что-то новое
Цитата Сообщение от fromdd Посмотреть сообщение
кнопки создаю в цикле так
C#
1
Response.Write("<td> <button id=\"1\" runat=\"server\" onserverclick =\"doit\"> кнопка </button> </td> </tr>");
Вы не можете создать через JS серверный элемент. Эти аттрибуты runat, onserverclick будут восприниматься как обычные атрибуты HTML элемента. И ни на что не влияют и ничего не вызовут.
Создайте нормально кнопку в разметке ASPX.


Цитата Сообщение от fromdd Посмотреть сообщение
Response.Write("helloworld");
Это тоже не понятно для чего. Попытайтесь прочитать и понять как работают события в ВебФорме. Тогда вы поймёте что это сообщение будет выведено не понятно куда и будет ли выведено вообще.

Цитата Сообщение от fromdd Посмотреть сообщение
<button
Это тоже что такое? Почитайте ещё HTML. Кнопка это элемент <input type='button'/>
0
fromdd
3 / 3 / 0
Регистрация: 19.03.2011
Сообщений: 311
01.09.2014, 14:58  [ТС] 7
Цитата Сообщение от HF Посмотреть сообщение
Вы не можете создать через JS серверный элемент. Эти аттрибуты runat, onserverclick будут восприниматься как обычные атрибуты HTML элемента. И ни на что не влияют и ничего не вызовут.
Создайте нормально кнопку в разметке ASPX.
смотрел в средствах разработчика (ie) все создается нормально, все свойства на месте
Цитата Сообщение от HF Посмотреть сообщение
Это тоже что такое? Почитайте ещё HTML. Кнопка это элемент <input type='button'/>
опирался вот на это msdn http://msdn.microsoft.com/en-us/library/a8fd2268(v=vs.90).aspx
и stackoverflow http://stackoverflow.com/questions/8...asp-net-button
если верить им все работает

Добавлено через 1 час 23 минуты
и как можно создать множество кнопок на форме (в каждой строке) таблицы, если таблица формируется динамически, в зависимости от запроса к бд
0
Taliesin
38 / 34 / 15
Регистрация: 18.09.2013
Сообщений: 115
01.09.2014, 15:33 8
Цитата Сообщение от fromdd Посмотреть сообщение
опирался вот на это msdn http://msdn.microsoft.com/en-us/libr...(v=vs.90).aspx
Плохо читали. Там этот код обрабатывается на сервере. Запихивая кнопку в Response.Write вы отображаете её в разметке HTML у клиента. HTML может схавать всё что угодно. Если он не распознал тег то он его просто игнорирует. Код на который Вы указали пруфом пишется на странице *.aspx.
0
fromdd
3 / 3 / 0
Регистрация: 19.03.2011
Сообщений: 311
01.09.2014, 16:12  [ТС] 9
пробовал пример, процедура не работает именно для кнопок которые создаются в цикле, те если отдельно описать кнопку то
C#
1
2
3
4
  void Button1_OnClick(object Source, EventArgs e) 
      {
         Span1.InnerHtml="You clicked Button1";
      }
отлично срабатывает

По задаче мне надо создать таблицу с каждой строке которой есть кнопка, кроме способа
C#
1
  Response.Write("<td> <button  runat=\"server\" onserverclick =\"doit\"> кнопка </button> </td> </tr>");
не вижу решения, но в током случае атрибуты тега не обрабатываются, как можно обойти эту проблему?
0
Taliesin
38 / 34 / 15
Регистрация: 18.09.2013
Сообщений: 115
01.09.2014, 17:53 10
Вот Вам таблица создаваемая динамически и где в каждую ячейку добавляется кнопка.

Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
protected void Page_Load(object sender, EventArgs e)
        {
            int _height = 5;
            int _wight = 5;
            Table table = new Table(); //Создаём новую таблицу
            form1.Controls.Add(table);
 
            for (int i = 0; i < _height; i++)
            {
                TableRow row = new TableRow(); //Создаём новую строку и добавляем в таблицу
                table.Rows.Add(row);
                for (int j = 0; j < _wight; j++)
                {
                    TableCell cell = new TableCell();//Создаём объект ячейки в таблице и добавляем в строку
                    table.Rows[i].Cells.Add(cell);
                    table.Rows[i].Cells[j].BorderStyle = BorderStyle.Groove;
 
                    Button tempButton = new Button();//Создаём на сервере кнопку
                    tempButton.ID = "button " + i.ToString() +" "+ j.ToString();//Айдишка для удобства
                    tempButton.Text = "["+ i.ToString() +"]["+ j.ToString()+"]";
                    //--куча всяких других свойств--//
                    tempButton.Click += new EventHandler(tempButton_Click); //Добавляем метод tempButton_Click  к событию клик          
                    table.Rows[i].Cells[j].Controls.Add(tempButton);//Вставляем получившуюся кнопочку на форму. Вместо формы может быть  другой серверный контрол: Panel, Table.Cell и прочее
                }
            }
 
        }
 
        void tempButton_Click(object sender, EventArgs e)//Метод вызываемый в событии. Может хранить любую логику.
        {
            txtBx1.Text = (sender as Button).ID + " was click";
        }
    }
0
fromdd
3 / 3 / 0
Регистрация: 19.03.2011
Сообщений: 311
02.09.2014, 08:16  [ТС] 11
а через html разметку нельзя создать эту таблицу? просто у меня в первом столбце объединяются ячейки с одинаковым значением, через rowspawn
0
Taliesin
38 / 34 / 15
Регистрация: 18.09.2013
Сообщений: 115
02.09.2014, 11:29 12
Вы хотите создать таблицу в разметке ASP? И потом динамически добавлять туда кнопки?
Таблица HTML это просто:
HTML5
1
2
3
4
5
6
<table>
   <tr>
       <td></td>
       <td></td>
   </tr>
</table>
Вот код, который динамически генерирует разметку HTML для таблицы и кнопки.
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            string layout = "";
            string scrBtn = "alert('>>>>>Hello world<<<<<<');";
 
            layout+=CreateHTML.GetTable(5,5,CreateHTML.GetButton(scrBtn, "button"));
            Response.Write(layout);            
        }
    }
    static class CreateHTML
    {
        /// <summary>
        /// генерирует сроку с разметкой HTML для таблицы
        /// </summary>
        /// <param name="_height">количество срок в таблице</param>
        /// <param name="_widht">количество столбцов в таблице</param>
        /// <param name="_input">строки которые должны находиться в ячейке генерируемой таблицы</param>
        /// <returns></returns>
        static public string GetTable(int _height, int _widht, string _input)
        {
            string table = "<table>";
            for (int i = 0; i < _height; i++)
            {
                table += "<tr>";
                for (int j = 0; j < _widht; j++)
                {
                    table += "<td>";
                    table += _input;
                    table += "</td>";
                }
                table += "</br></tr>";
            }
 
            return table + "</table>";
        }
 
        /// <summary>
        /// Создёт строку с разметкой HTML для кнопки
        /// </summary>
        /// <param name="_script">Строка содержащая в седе javascript код, выполняемый при нажатии кнопки</param>
        /// <param name="_name">Имя кнопки</param>
        /// <returns></returns>
        static public string GetButton(string _script, string _name)
        {
            string button = "<input type=\"button\" ONCLICK=\"EventBtn()\" value =\"" + _name + "\">";
            button += "<script type=\"text/javascript\">  function EventBtn (){" + _script + "}</script>";
            return button;
        }
    }

Если и это не поможет то я и не знаю, что Вам тогда надо...
Вообще мой код это пример того как делать не стоит в смысле Responce.Write это та фича, которой лучше не пользоваться.
0
02.09.2014, 11:29
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.09.2014, 11:29

Как вызвать обработчик событий для кнопки в Delphi 7?
похожее нашел,но не уверен что то для кнопки Page Up или Page Down procedure TForm2.bOK(Sender:...

Как правильно создать экземпляр класса для доступа к его свойствам
Всем доброго времени суток. Сижу уже долго над этим участком. У меня есть класс Pinball, я создаю...

Как правильно создать функцию и затем вызвать ее
#include&lt;string&gt; #include &lt;cmath&gt; #include &lt;iostream&gt; #include&lt;locale&gt; using namespace std; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru