2014-09-01 5 views
-1

У меня есть combobox, связанный с источником данных, и я вставляю пустое значение в индекс 0, как показано ниже.Как преобразовать пустую строку в guid.empty в vb.net

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? поэтому метод принимает параметр. Любая помощь будет оценена. спасибо заранее

ответ

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 
+0

Спасибо, я также использовал тот же подход. – Python

0

Я всегда поклонник меньшего кода.

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

Проверяет SelectedIndex свойства ComboBox и подтвердить это больше, чем 0, который также будет обрабатывать случай, когда ничего не выбрано (индекс -1).

В то время как это умно, чтобы назначить новый GUID для записи с guid.NewGuid(), вы можете также использовать guid.Empty который будет возвращать 00000000-0000-0000-0000-000000000000

В своем вопросе вы заявили, что у вас есть пустая строковое значение в индексе 0, но для полноты я буду обращаться, если у вас было несколько записей с пустым строковым значением. В таком случае, проверьте на SelectedValue вместо SelectedIndex в ComboBox в тройном заявлении:

Dim guid As Guid = If(cb.SelectedValue.Length > 0, guid.Parse(cb.SelectedValue), guid.NewGuid()) 
Смежные вопросы