質問

グリッドビューに次の列があります。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販売日の値は次のようになります。 2010 年 9 月 2 日 8:59:00 AM

助言がありますか?

役に立ちましたか?

解決

何が問題なのかわかりました。データ型が文字列に設定されていたため、グリッドビューからバインドフィールドをフォーマットできませんでした。グリッドビューにデータを設定するために使用しているデータ セットは 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
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top