Работает ли строка формата "c" в ASP.NET так же, как, например, в Windows Forms? Потому что в WinForms я вполне уверен, что он соответствует настройкам валюты *1002* клиента. Таким образом, даже если значение хранится в долларах США, если клиентский компьютер настроен на отображение иены, то это символ валюты, который будет отображаться. Это может быть не то, что вы хотите.
Может быть разумнее использовать:
txtPayment.Text = dr["Payment"].ToString("00.00")