0

我正在寻找一种知道控件名称的方法来提升它们或调用背后的进程事件/代码。我在 VS2010 中使用 VB .NET

我有一个 aspx 页面,面板中有一个复选框,每个复选框都有自己的触发器。我有保存选中复选框列表的代码。我有将选中状态恢复到这些复选框的代码,但我需要对复选框 checkchanged 事件执行关联代码。

' Read db to get saved list of checkboxes '
For each result from db
    Dim cb As CheckBox
    cb = 'a function that finds and returns the control'
    ' Now that I have the control, 
    ' how can I find and execute it's checkedchanged code?

控制返回函数正在工作,因为在测试中,我可以处理 cb.checked = true,并且 cb 被选中,但这不会引发事件/触发代码。

关联的checkedchanged子示例:

Protected Sub cb_use_rc3_CheckedChanged(ByVal sender As Object, ByVal e As EventArgs) Handles cb_use_rc3.CheckedChanged
Protected Sub cb_use_casestatus_CheckedChanged(sender As Object, e As EventArgs) Handles cb_use_casestatus.CheckedChanged

有任何想法吗?

4

2 回答 2

3
For Each grd_Row As GridViewRow In gvPersonalInventario.Rows
  Dim cb As New Web.UI.WebControls.CheckBox
  cb = grd_Row.FindControl("CheckBox2")
  If cb.Checked = True Then
    label1.text = grd_Row.Cells(0).Text
  End If
Next
于 2012-10-22T18:53:51.610 回答
0

好的,我正在假设您的复选框每个都有一个单独的 ID,并且不是由任何类型的绑定控件生成的。

虽然可以确定哪个处理程序连接到哪个对象的哪个事件(或者我理解),但对于这种有限的情况,它可能比它的价值更麻烦。

最简单但最丑陋的方法是:

  1. 遵循 Schmelter 先生的建议,将业务逻辑隔离在有意义的命名方法中。从每个事件处理程序调用它们,而不是将所有逻辑放在事件处理程序中。
  2. 由于您拥有控件,因此您可以确定其 ID。使用Select Case带有控件 ID 的语句来确定要调用 #1 中的哪些方法。
于 2012-09-21T17:24:27.610 回答