У меня есть ASP ListView, и у меня очень простое требование отображать числа в формате без запятой (12,123), в то время как они должны быть привязаны к базе данных без форматирования (12123). Я использую стандартную настройку - ListView с подключенным источником данных, используя Bind ().
Я преобразовал из более старого кода, поэтому я не использую элементы управления ASP.NET, просто формирую входные данные ... но я не думаю, что это имеет значение для этого:
<asp:SqlDataSource ID="MySqlDataSource" runat="server"
ConnectionString='<%$ ConnectionStrings:ConnectionString1 %>'
SelectCommand="SELECT NUMSTR FROM MY_TABLE WHERE ID = @ID"
UpdateCommand= "UPDATE MY_TABLE SET NUMSTR = @NUMSTR WHERE ID = @ID">
</asp:SqlDataSource>
<asp:ListView ID="MyListView" runat="server" DataSourceID="MySqlDataSource">
<LayoutTemplate>
<div id="itemplaceholder" runat="server"></div>
</LayoutTemplate>
<ItemTemplate>
<input type="text" name="NUMSTR" ID="NUMSTR"
runat="server" value='<%#Bind("NUMSTR")%>' />
<asp:Button ID="UpdateButton" runat="server" Text="Update" Commandname="Update" />
</ItemTemplate>
</asp:ListView>
В приведенном выше примере NUMSTR - это число, но хранится в виде строки в базе данных SqlServer 2008. Я также использую ItemTemplate
для чтения и редактирования шаблонов, чтобы сэкономить на дубликате HTML. В примере я получаю только неформатированный номер. Если я преобразую поле в целое число (через SELECT
) и использую строку формата, такую как Bind("NUMSTR", "{0:###,###}")
, оно записывает отформатированное число в базу данных, а затем завершается неудачно, когда пытается снова прочитать его (не может преобразовать запятая там).
Есть ли какое-нибудь элегантное / простое решение для этого? Настолько легко запустить двустороннее связывание, и я думаю, что должен быть способ легко форматировать вещи ...
О, и я стараюсь избегать стандартного подхода ItemTemplate
и EditItemTemplate
, просто для разметки, необходимой для этого.
Спасибо!