设置默认情况下选中的单选按钮时出错

时间:2014-02-25 19:02:22

标签: vb.net radio-button radio-group

我的VB.NET dll中有一个单选按钮,默认情况下我不会被检查。该组共有3个单选按钮。在其属性下,我设置了Checked = true。我验证了代码在那里,这是单选按钮的所有表单生成代码:

Me.rdbProductPC.AutoSize = True
Me.rdbProductPC.Checked = True
Me.rdbProductPC.Font = New System.Drawing.Font("Tahoma", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.rdbProductPC.Location = New System.Drawing.Point(49, 12)
Me.rdbProductPC.Name = "rdbProductPC"
Me.rdbProductPC.Size = New System.Drawing.Size(45, 17)
Me.rdbProductPC.TabIndex = 1
Me.rdbProductPC.TabStop = True
Me.rdbProductPC.Text = "P&&C"
Me.rdbProductPC.UseVisualStyleBackColor = True

出于某种原因,我在启动应用程序时遇到此错误:

  

创建表单时出错。有关详细信息,请参阅Exception.InnerException。错误是:ExecuteReader需要一个开放且可用的连接。连接的当前状态已关闭。

除了调整选中值的一行外,没有任何变化。知道是什么导致了这个吗?

这是我的GetProducts()方法的代码。调用ExecuteReader()后出现错误,但我看不到这个代码。如果我的g_strSQL = pc_mis_busunit_product_relate_summary它执行正常。但是当g_strSQL = pc_mis_busunit_product_relate_summary '','','N'时,它会出错。

话虽这么说,如果我在默认情况下取消选中单选按钮,然后在程序运行时再检查它,它将进入同样的方法,g_strSQL看起来像pc_mis_busunit_product_relate_summary '','','N',它将正常工作。 / p>

Private Sub GetProducts(ByVal ProductList As ListBox)
    Dim g_strSQL As String

    ProductList.Items.Clear()
    lstProductSel.Items.Clear()
    lstProduct.Enabled = True

    g_strSQL = String.Empty


    objcmd.Connection = ControlConnection

    'Clear location combo box
    Select Case intProduct
        Case Product.Summary
            g_strSQL = g_strSQL & "pc_mis_busunit_product_relate_summary "
        Case Product.Detail
            g_strSQL = "SELECT DISTINCT b.dtl_prod_cd, rtrim(ltrim(b.dtl_prod_desc))"
            g_strSQL = g_strSQL & " FROM product_detail_ref b "
            g_strSQL = g_strSQL & " ORDER BY rtrim(ltrim(b.dtl_prod_desc)) "
        Case Else
            Exit Sub
    End Select

    If p_and_C <> String.Empty Then
        g_strSQL = g_strSQL & "'" & String.Empty & "','" & String.Empty & "','" & p_and_C & "'"
    End If

    If g_strSQL <> "" Then
        objcmd.CommandText = g_strSQL
        rsProducts = objcmd.ExecuteReader()
    End If

    'Process results from query

    If rsProducts.HasRows = False Then
        rsProducts.Close()
        Exit Sub
    Else
        ' This nested if will check which radio button is selected and add the corresponding
        ' 'all' entry to the top of the lstProduct box
        If rdbProductPC.Checked = True Then
            ProductList.Items.Add(PAndCConstants.ALL_P_AND_C)
        ElseIf rdbProductNonPC.Checked = True Then
            ProductList.Items.Add(PAndCConstants.ALL_NON_P_AND_C)
        Else
            ProductList.Items.Add(PAndCConstants.ALL)
        End If

        ProductList.SelectedIndex = 0
        While rsProducts.Read()
            ProductList.Items.Add(rsProducts(0))
        End While
        ProductList.SetSelected(0, True)
        rsProducts.Close()
    End If

    rsProducts = Nothing
End Sub

0 个答案:

没有答案