动态handle datagrid里的控件的event
最近做的东西要handle datagrid里面的控件的event,datagrid是动态生成的,里面每一行都有一个textbox,第一个改了之后后面的都要改,但后面的改了不影响其他的。
显然要用写一个sub来处理事件,再用addhandler
Private Sub txtABC_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
End Sub
End Sub
AddHandler CType(e.Item.FindControl("txtABC"), TextBox).Text_Changed, AddressOf txtABC_TextChanged
可是这个addhandler在哪里写呢?我先写在datagrid的itemdatabound里面,发现不行,才意识到动态加上去的handler是不会被保存的,也就是说,每次postback都要再用一次addhandler
所以我把它写到了itemcreated事件里面:
Private Sub dgFoo_ItemCreated(ByVal sender As Object, ByVal e As DataGridItemEventArgs) Handles dgFoo.ItemCreated
If e.Item.ItemIndex = 0 Then
AddHandler CType(e.Item.FindControl("txtABC"), TextBox).Date_Changed, AddressOf txtABC_TextChanged
End If
End Sub
If e.Item.ItemIndex = 0 Then
AddHandler CType(e.Item.FindControl("txtABC"), TextBox).Date_Changed, AddressOf txtABC_TextChanged
End If
End Sub
这样就可以了。