2

グリッドビューに次の列があります。1つは日付で、もう1つは金額です。フォーマットを適用し、HtmlEncodeプロパティをfalseに設定しましたが、値はフォーマットされずに表示されます。

<asp:BoundField DataField="Total" HeaderText="Total" ReadOnly="true" HtmlEncode="False" DataFormatString="{0:C}" />
<asp:BoundField DataField="Sale_Date" HeaderText="Sale Date" ReadOnly="true" HtmlEncode="False" DataFormatString = "{0:d}" />

これらの値がグリッドビューに表示される方法は次のとおりです。

「合計」の値は次のように表示されます:190.0000 販売日の値は次のように表示されます:9/2/2010 8:59:00 AM

助言がありますか?

4

1 に答える 1

6

私は問題が何であるかを見つけました。データ型が文字列に設定されていたため、グリッドビューから境界フィールドをフォーマットできませんでした。グリッドビューにデータを入力するために使用しているデータセットはWebサービスからのものであり、データセット内のすべてのフィールドが文字列として返されるため、グリッドビューのDataFormatStringプロパティが機能していませんでした。

修正:Webサービスからデータセットを取得した後、グリッドビューのデータソースとして使用する前に、これらのフィールドのデータ型を変更することになりました。これを行うと、グリッドビューのDataFormatStringプロパティが期待どおりに機能しました。

ds = _ws.GetOrderList(brokerId, type, pageSize, pageNum, sort, searchBy, searchFor);
ds2 = ds.Clone();

ds2.Tables[0].Columns["Price"].DataType = System.Type.GetType("System.Double");
ds2.Tables[0].Columns["Total"].DataType = System.Type.GetType("System.Double");
ds2.Tables[0].Columns["Sale_Date"].DataType = System.Type.GetType("System.DateTime");

foreach (DataRow row in ds.Tables[0].Rows)
  {
     ds2.Tables[0].ImportRow(row);
  }
return ds2
于 2010-09-10T17:54:24.283 に答える