Формат ASP.Net VB SqlDataReader

У меня есть SqlDataReader, который читает данные из базы данных. Как отформатировать номер телефона, чтобы он возвращался как (123) 456-7890 вместо 1234567890 на моей странице aspx? Мой читатель следующим образом:

txtFaxPhone.Text = reader("FaxPhone").ToString()


person g_shockTan    schedule 07.03.2013    source источник
comment
Это не сложно. Что вы хотите делать с нулевыми, пустыми более короткими номерами, более длинными номерами. Уже отформатированы номера? Уже отформатированные числа - это другой формат.   -  person Tony Hopkinson    schedule 07.03.2013
comment
@TonyHopkinson Если ноль, оставьте поле пустым. числа не оформлены. Просто прочитайте данные из базы данных и выведите в формате телефонного номера. Спасибо.   -  person g_shockTan    schedule 07.03.2013
comment
Я понял это, используя: txtFaxPhone.Text = Format(PhoneFormat(reader(FaxPhone).ToString()))   -  person g_shockTan    schedule 07.03.2013
comment
Даже не знал, что существует PhoneFormat. Я это запомню.   -  person Tony Hopkinson    schedule 07.03.2013
comment
Я не думаю, что существует какой-либо метод PhoneFormat, я думаю, что OP использует собственный метод, который уже определен в их проекте.   -  person rs.    schedule 07.03.2013
comment
@TonyHopkinson Причина, по которой PhoneFormat сработала, заключалась в том, что я добавил общедоступную общую функцию PhoneFormat. Так что вы правы, метода PhoneFormat нет.   -  person g_shockTan    schedule 08.03.2013
comment
А жаль, пригодился бы. Это было бы одним из моих предложений, другим было бы сделать это в SQL.   -  person Tony Hopkinson    schedule 08.03.2013


Ответы (1)


Попробуйте что-то вроде этого:

If reader.IsDbNull(reader.GetOrdinal("FaxPhone"))
   txtFaxPhone.Text = String.Empty
Else
   txtFaxPhone.Text = String.Format("(000) 000-0000", reader("FaxPhone"))
End If

Примечание: это предполагает, что ваш номер телефона является числом. Если это строка, вам придется ее подстроку.

person Ann L.    schedule 07.03.2013
comment
Я попробовал ваше предложение и получил следующую ошибку: System.IndexOutOfRangeException: FaxNumber. Как бы вы его подстрочили? - person g_shockTan; 07.03.2013
comment
Похоже, вы использовали FaxNumber, а не FaxPhone в качестве имени поля. Который из них? - person Ann L.; 07.03.2013