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

时间:2014-09-01 11:41:52

标签: 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 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?所以方法接受参数。任何帮助将不胜感激。提前谢谢

2 个答案:

答案 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())