如何在vb.net中将空字符串转换为guid.empty

如何在vb.net中将空字符串转换为guid.empty,vb.net,combobox,Vb.net,Combobox,我有一个与数据源绑定的组合框,我正在向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

我有一个与数据源绑定的组合框,我正在向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
PopulateManageMessageGridView(Guid.Parse(cmbSelectCustomer.SelectedValue)) 
在这里我必须传递一个Guid?类型值或Guid值如下所示

 Private Sub PopulateManageMessageGridView(ByVal customerID As Guid?)

   End Sub
PopulateManageMessageGridView(Guid.Parse(cmbSelectCustomer.SelectedValue)) 
但是当cmbselectCustomer.selectedValue为string.empty(“”)时,则会出现类似于“无法识别的Guid格式”的错误

那么如何将string.empty转换为guid呢?所以方法接受参数。任何帮助都将不胜感激。提前感谢

请查看:

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

我总是喜欢写更少的代码

Dim cb As New ComboBox
Dim guid As Guid = If(cb.SelectedIndex > 0, guid.Parse(cb.SelectedValue), guid.NewGuid())
我们检查组合框的
SelectedIndex
属性并确认它大于0,这也将处理未选择任何内容的情况(索引为-1)

虽然使用
guid.NewGuid()
为记录分配新的guid是明智的,但您也可以使用
guid.Empty
,它将返回00000000-0000-0000-00000000

在您的问题中,您声明索引0处有空字符串值,但为了完整性,我将说明您是否有多个具有空字符串值的记录。在这种情况下,检查三元语句中组合框的
SelectedValue
,而不是
SelectedIndex

Dim guid As Guid = If(cb.SelectedValue.Length > 0, guid.Parse(cb.SelectedValue), guid.NewGuid())

谢谢,我也用了同样的方法。