我有一个与数据源绑定的组合框,我正在向0索引插入一个空白值,如下所示。
Private Sub BuildCustomerList()
Dim ID As String = CStr(Session("M3_CustomerID"))
Dim fCustID As Guid = Guid.Parse(ID)
Dim dt As DataTable = dbAccess.GetCustomerRecord(fCustID)
'Set initial user display settings
cmbSelectCustomer.DataValueField = dt.Columns(0).ToString()
cmbSelectCustomer.DataTextField = dt.Columns(1).ToString()
cmbSelectCustomer.DataSource = dt
cmbSelectCustomer.DataBind()
cmbSelectCustomer.Items.Insert(0, New ListItem(String.Empty, DBNull.Value.ToString()))
', (Guid.Empty).ToString()))
cmbSelectCustomer.SelectedIndex = 0
End Sub
有一种接受guid类型参数的方法,如下所示
Private Sub PopulateManageMessageGridView(ByVal customerID As Guid?)
End Sub
在这里,我必须通过一个Guid?类型值或Guid值如下所示
PopulateManageMessageGridView(Guid.Parse(cmbSelectCustomer.SelectedValue))
但是当cmbselectCustomer.selectedValue是string.empty(“”)时,它会给出类似“无法识别的Guid格式”的错误。
那么如何将string.empty转换为guid?所以方法接受参数。任何帮助将不胜感激。提前谢谢
答案 0 :(得分:1)
检查一下:
Dim customer = cmbSelectCustomer.SelectedValue
Dim guid As Guid
If String.IsNullOrEmpty(customer) Then
guid = Guid.Empty
Else
guid = Guid.Parse(customer)
End If
PopulateManageMessageGridView(guid)
您也可以使用Guid.TryParse
:
Dim customer = cmbSelectCustomer.SelectedValue
Dim guid As Guid
If Not Guid.TryParse(customer, guid) Then guid = Guid.Empty
PopulateManageMessageGridView(guid)
也许你只想在字符串不为空时才调用该方法:
If Not String.IsNullOrEmpty(customer) Then
PopulateManageMessageGridView(Guid.Parse(customer))
End If
答案 1 :(得分:0)
我总是喜欢较少的代码。
Dim cb As New ComboBox
Dim guid As Guid = If(cb.SelectedIndex > 0, guid.Parse(cb.SelectedValue), guid.NewGuid())
我们检查ComboBox的SelectedIndex
属性并确认它大于0,这也将处理未选择任何内容的情况(索引为-1)。
虽然使用guid.NewGuid()
为记录分配新的guid是明智的,但您也可以使用guid.Empty
,它将返回00000000-0000-0000-0000-000000000000
在您的问题中,您声明在索引0处有空字符串值,但为了完整性,如果您有多个空字符串值的记录,我将解决。在这种情况下,请在三元语句中检查SelectedValue
而不是ComboBox的SelectedIndex
:
Dim guid As Guid = If(cb.SelectedValue.Length > 0, guid.Parse(cb.SelectedValue), guid.NewGuid())