我想在database
中插入两个groupbox
的记录。 groupbox1
(有男性和女性radio buttons
)和groupbox2
(有新生和老同学radio buttons
)
在这种情况下,有四种可能的输入需要检查
通常我会像这样单独检查每个单选按钮
If rbtMale.Checked And rbtOld.Checked Then
Dim OldStudent = rbtOld.Text.ToString
Dim Male = rbtMale.Text.ToString
Using cmd As New SqlClient.SqlCommand("dbo.uspInsert", cn)
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.Add(New SqlParameter("@StudPic", SqlDbType.Image))
If (Not String.IsNullOrEmpty(Me.Name) AndAlso System.IO.File.Exists(a.FileName)) Then
cmd.Parameters("@StudPic").Value = System.IO.File.ReadAllBytes(a.FileName)
cmd.Parameters.Add("@SurName", SqlDbType.VarChar, 100).Value = txtStudLN.Text
cmd.Parameters.Add("@FirstName", SqlDbType.VarChar, 100).Value = txtStudFN.Text
cmd.Parameters.Add("@Gender", SqlDbType.VarChar, 100).Value = Male
cmd.Parameters.Add("@Status", SqlDbType.VarChar, 100).Value = OldStudent
cmd.ExecuteNonQuery()
MsgBox("Save Record New record Successfully")
End If
End Using
End If
但我认为有一种明智的方法可以检查radio button
中正在检查哪个groupbox
并将其插入database
。下面是一些代码,让我了解这一点,但问题是我不知道如何传递groupbox
中的值,然后将其插入我的数据库中。任何帮助将非常感谢。感谢
For Each Ctrl In GroupBox1.Controls
If Ctrl.checked Then MsgBox(Ctrl.name)
Next
答案 0 :(得分:2)
你几乎在问题底部的片段中。此函数将groupbox作为参数,并返回已检查的RadioButton
Private Function GetGroupBoxCheckedButton(grpb As GroupBox) as RadioButton
For Each ctrl As RadioButton In grpb.Controls
If ctrl.Checked Then Return ctrl
Next
End Function
您将收到编译器警告,该函数不会在所有代码路径上返回结果,但这与RadioButton无关 - 假设您在组框中有多个单选按钮 - 理论上。
或者你也可以使用它。它不会生成编译器警告,但可读性较差: -
Private Function GetGroupBoxCheckedButton(grpb As GroupBox) As RadioButton
Dim rButton As RadioButton = grpb.Controls.OfType(Of RadioButton).Where(Function(r) r.Checked = True).FirstOrDefault()
Return rButton
End Function
要获取文本值,只需使用
之类的内容Dim value As String = GetGroupBoxCheckedButton(GroupBox1).Text
我猜你要做的就是将RadioButton文本添加到数据库中,而不是多次编写上面的代码,你只想做一次。您只需删除If
和End If
语句,并修改您的代码的第一部分即可阅读..
Dim Status As String= GetGroupBoxCheckedButton(GroupBox1).Text
Dim Gender As String= GetGroupBoxCheckedButton(GroupBox2).Text
顺便说一句,由于.ToString
属性返回字符串并且不需要转换为字符串,因此在这些行的末尾不需要.Text
最后在代码中进一步更改变量以匹配。
cmd.Parameters.Add("@Gender", SqlDbType.VarChar, 100).Value = Gender
cmd.Parameters.Add("@Status", SqlDbType.VarChar, 100).Value = Status