2

我有一个如下的 vb.net 函数,其中我将复选框控件名称作为参数传递。代码在这里

Public Function emaildata(ByVal grdv As GridView, ByVal ctrl As String, ByVal celpos As Integer) As GridView
        Dim comm As OleDbCommand = New OleDbCommand()
        Dim bpv As String = ""
        Dim gv As New GridView
        For Each gvrow As GridViewRow In grdv.Rows
            Dim chkbx As CheckBox = CType(gvrow.FindControl(ctrl), CheckBox)
            If chkbx.Checked Then
                If bpv <> "" Then
                    bpv += ","
                End If
                bpv += gvrow.Cells(celpos).Text
                comm.CommandText = "SELECT chq_num Cheque#,to_char(bpv_amt,'9,999,999,999') Amount,vch_nar Narration,bnf_nam PartyName,acc_des Bank from  CHECK_DATA where bpv_num in(" & bpv.ToString() & ") and BPV_DTE=to_date('" & TreeView2.SelectedValue & "')"
                comm.CommandType = CommandType.Text
                comm.Connection = con
                Dim da As New OleDbDataAdapter(comm)
                Dim ds As New DataSet
                da.Fill(ds)
                gv.DataSource = ds
                gv.DataBind()
            End If
        Next
        Return gv
    End Function

问题是我必须使用与单选按钮相同的功能也与文本框,我不想为所有类型的控件编写单独的函数。我想将控件检测为参数和。例如,如果我传递文本框然后函数应该表现得像一个文本框,如果是单选,那么是单选行为,如果是复选框,那么这个行为是一样的。我有这三个控件来传递函数,我想为这些控件创建一个自动检测方法

4

1 回答 1

1

您需要将 ctrl 作为 CONTROL(它是所有控件的基类)作为参数发送。

您需要使用后期绑定,并且需要为每种控件类型编写单独的案例......

下面的代码仅适用于复选框

Dim chkbx As CheckBox = CType(gvrow.FindControl(ctrl), CheckBox)
If chkbx.Checked Then

对于文本框和单选按钮,您需要编写额外的代码

Public Function emaildata(ByVal grdv As GridView, ByVal ctrl As Control, ByVal celpos As Integer) As GridView

 If TypeOf ctrl Is Button Then

 ElseIf TypeOf ctrl Is RadioButton Then 

 Else

 EndIf
于 2012-11-03T09:57:10.107 回答