我有一个ASP ListView,并有一个非常简单的要求,以格式化显示数字用逗号(12,123),而他们需要绑定到数据库而不格式化(12123)。我正在使用一个标准的设置 - 使用Bind()连接数据源的ListView。ASP ListView - Eval()格式化的数字,绑定()为未格式化?
我从一些旧的代码转换,所以我不使用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
方法,仅仅是为了达到这个标准所需的标准量。
谢谢!
我结束了刚刚剥从NewValues集合在ListView ItemUpdating事件逗号,并在ItemDataBound事件中添加逗号。任何其他方式以干净的方式做到这一点? – chucknelson 2010-03-24 21:01:39