Сделать событие для нескольких кнопок и знать, какая кнопка была нажата - PullRequest
0 голосов
/ 01 февраля 2012

Я пишу веб-приложение на asp.net. В приведенном ниже коде у меня есть этот код:

foreach(UserDetails _UD in m_TeachersDetailsList)     
{
  Button button = new Button();// a Button control
  button.Text = "click";
  button.ID = "SelectedTeacher";
  TableCell tableCell = new TableCell();// a Cell control
  tableCell.Controls.Add(button);
  TableRow tableRow = new TableRow();
  tableRow.Cells.Add(tableCell); // a table row
  TableSearchResult.Rows.Add(tableRow); // a table that had been created in the aspx 
}

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

Ответы [ 3 ]

1 голос
/ 01 февраля 2012

Вы делаете это

 int id = 0;
 foreach(UserDetails _UD in m_TeachersDetailsList)     
 {
    Button button = new Button();// a Button control
    button.Text = "click";
    button.ID = "selectedTeacher" + id++;
    TableCell tableCell = new TableCell();// a Cell control
    tableCell.Controls.Add(button);
    TableRow tableRow = new TableRow();
    tableRow.Cells.Add(tableCell); // a table row
    TableSearchResult.Rows.Add(tableRow); // a table that had been created in the aspx 
    button.Click += new EventHandler(this.button_Click);
 }

И общий обработчик событий

protected void button_Click(object sender, EventArgs e)
{
    //This way you will get the button clicked
    Button button = (Button)sender;

}

Важно

Вам нужно будет добавить элементы управления в OnInit.

Надеюсь, это работает для вас.

1 голос
/ 01 февраля 2012

Не устанавливайте кнопку id, оставьте ее по умолчанию.Вместо этого установите свойство кнопки CommandArgument:

foreach (UserDetails _UD in m_TeachersDetailsList)     
{
  Button button = new Button();// a Button control
  button.Text = "click";
  button.CommandArgument = _UD.UserDetailID.ToString(); // some unique identifier

  // this is optional, if you need multiple actions for each UserDetail:
  button.CommandName = "SomeAction"; // optional

  button.Command += new EventHandler(detailButton_Handler);

  // ...etc...
}

Тогда ваш обработчик должен проверить значения CommandName и CommandArgument:

public void detailButton_Handler(object sender, EventArgs e)
{
    string DetailID = e.CommandArgument.ToString();
    switch (e.CommandName.ToString())
    {
        case "SomeAction":
        /// Now you know which Detail they clicked on
            break;

        case "OtherAction":
            break;
    }
}
0 голосов
/ 01 февраля 2012

ASPX

asp:Button ID="btnTest" runat="server" onclick="btn_Click" 

Codebehind

protected void btn_Click(object sender, EventArgs e)
{
    Button mybutton = (Button)sender;
    Response.Write(mybutton.ID);
}

Просто используйте btn_Click как щелчок для каждой из ваших кнопок.Затем используйте «отправитель», чтобы определить, какой элемент управления отправил запрос.

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