Я пытаюсь создать массив хэш-таблиц. Я не знаю, является ли это лучшим решением, в PHP я бы просто сделал многомерный массив, но в .NET это не так просто. Я довольно новый o VB, поэтому, если есть лучшее решение для этого, пожалуйста, объясните.VB.NET Array/Hashtable Issue
У меня есть два поля электронной почты для контакта, и у контакта может быть много. Я просто хочу загрузить в первых двух на странице редактирования для редактирования, какими бы они ни были.
Private Sub loadPrimaryContactEmails(ByVal db As CRMDataDataContext, ByVal contactID As Guid)
Dim q = (From ce In db.ContactEmails Where ce.ContactID = contactID Select ce).Take(2)
Dim Emails As Array
Dim count = 0
For Each email In q
Emails(count) = New Hashtable
Emails(count).Add("email", email.Email)
Emails(count).Add("label", email.Label)
Emails(count).Add("id", email.ContactEmailID)
count = count + 1
Next
txtPCEmail1.Text = Emails(0).Item("email")
txtPCEmail1Label.Text = Emails(0).Item("label")
lblEmail1ID.Text = Emails(0).Item("id")
txtPCEmail2.Text = Emails(1).Item("email")
txtPCEmail2Label.Text = Emails(1).Item("label")
lblEmail2ID.Text = Emails(1).Item("id")
End Sub
Я получаю ошибку в первый раз, когда я пытаюсь ссылаться на мой массив:
txtPCEmail1.Text = Emails(0).Item("email")
Ошибка является:
Object variable or With block variable not set.
Он строит, так что я думал, что это может сработать. Я не могу просто пропустить свой источник данных, потому что я должен явно устанавливать поля текстового поля. Есть ли лучший способ сделать это? Или есть способ сделать массив hashtables работать?
EDIT - вот хороший код: Так что я пошел ж/HybridDictionary ...
Private Sub loadPrimaryContactEmails(ByVal db As CRMDataDataContext, ByVal contactID As Guid)
Dim q = (From ce In db.ContactEmails Where ce.ContactID = contactID Select ce).Take(2)
Dim Emails As New HybridDictionary()
Dim count = 1
For Each email In q
Emails.Add("email" + NCStr(count), email.Email)
Emails.Add("label" + NCStr(count), email.Label)
Emails.Add("id" + NCStr(count), email.ContactEmailID)
count = count + 1
Next
txtPCEmail1.Text = Emails("email1")
txtPCEmail1Label.Text = Emails("label1")
lblEmail1ID.Text = Emails("id1")
txtPCEmail2.Text = Emails("email2")
txtPCEmail2Label.Text = Emails("label2")
lblEmail2ID.Text = Emails("id2")
End Sub
SO да, своего рода хак, но я не чувствую, что я должен сделать специальные методы просто загрузить некоторые данные в словарь или массив или что угодно.
Мне нравится hybridDictionary ... Я отправлю код в редактировании сообщения – KacieHouser 2010-11-28 00:12:51