我有一個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