2009-06-02 8 views
1

У меня есть кнопка в сетке, которую я создал программно. Кнопка редактирует некоторые данные в таблице, используя данные в скрытом столбце сетки, в которой находится кнопка. Обычно я отправляю скрытое поле данных строки с помощью javascript onclientclick кнопки, а затем внося изменения в базу данных, используя это скрытое поле. Но должен быть способ отправить addhandler кнопки параметр. Это код, я должен уточнить ....Отправить параметр addhandler?

Dim btnedit As New ImageButton 
    AddHandler btnedit.Click, AddressOf btnedit_Click 
    btnedit.ImageUrl = "\images\bttnEditMini.gif" 

If e.Row.RowType <> DataControlRowType.Header And e.Row.RowType <> DataControlRowType.Footer Then 
     e.Row.Cells(3).Controls.Add(btnedit) 
End If 

вот мой ДобавитьОбработчик с делегатом:

Public Delegate Sub ImageClickEventHandler(ByVal sender As Object, ByVal e As ImageClickEventArgs) 
Sub btnedit_Click(ByVal sender As Object, ByVal e As ImageClickEventArgs) 
//programming stuff 
End Sub 

Как я могу отправить этот обработчик параметр,?

ответ

0

Поскольку он был в сетке, я просто использовал команду row. И когда используется команда Row, вы можете отправить ей имя команды и команду. Я передал свой параметр в качестве аргумента.

GridView1.Rows(i).Cells(3).Controls.Add(btndel) 
      btndel.ImageUrl = "\images\bttnDelete.gif" 
      btndel.ToolTip = "This will delete the Selected Assignment" 
      btndel.CommandName = "destroy" 
      btndel.CommandArgument = GridView1.Rows(i).Cells(0).Text 
      btndel.Attributes.Add("onclick", "javascript: if(confirm('Are you sure you want to delete this Department Cost Days Assignment?')==false) return false;") 

вот rowcommand:

Protected Sub GridView1_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles GridView1.RowCommand 
    If e.CommandName = "destroy" Then 'used destroy because Delete command was prohibited. 
     Call Connection() 
     Dbcmd.CommandText = "Delete from table where condition = '" & e.CommandArgument & "'" 
     Dbcmd.ExecuteNonQuery() 
     Dbconn.Close() 
     Dbconn.Dispose() 
    End If 
1

Короткий ответ: нет. Куда вы отправите его? У вас есть два параметра.

Более длинный ответ: отправитель - это элемент управления, который отправил событие. В этом случае это будет ваш контроль btnEdit. Может быть, это поможет вам.

+0

Я понимаю это. но могу ли я настроить обработчик кликов для принятия другого параметра? если да, то что бы передать другие параметры? – Eric

+0

№. Обработчик события должен всегда соответствовать сигнатуре события. Дополнительные параметры невозможны. –

3

По соглашению все обработчики событий принимают два параметра: отправитель и EventArgs. Если вам нужно отправить пользовательскую информацию слушателям, создайте новый класс, который наследует от EventArgs и содержит информацию, необходимую для связи.

Отъезд this article on CodeProject, который покажет вам, как это сделать.

+0

Возможно. вы могли бы разместить образец кода? – Eric

0

Если вы не хотите использовать «по умолчанию»/уже определенные параметры, вы можете создавать свои собственные события.

+0

Это звучит интересно. Я займусь этим. – Eric

Смежные вопросы