[ad_1]
親愛なる専門家。
「SQLServer 2008」をバインドする「VS2010」でWindowsアプリケーションを作成しています。
「DataSource ウィザード」を使用して、DataSet、BindingSource、TableAdapter、BindaingNavigator、および DataGridView を操作します。
「データベース」に Sample という名前の「テーブル」があります。
ファイルの 1 つに「DateTime」データ型があります。 フィールドの名前は「日付」です。
データベースから「取得」するとき、およびデータベースに「設定」するときに、データを「変換」したい。
変換は、「datetime」から「persian datetime」およびその逆です。
このコードで「CellFormatting」イベントを使用して、DataGridView での「取得」データ変換を解決します。
private void StudentExamDataGridView_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e) { if (e.Value == DBNull.Value || e.Value == null) return; if (e.ColumnIndex < 0 || e.RowIndex < 0) return; if (e.ColumnIndex == StudentExamDataGridView.Columns["Date"].Index) { e.FormattingApplied = true; e.Value = new PersianCalendarEx(Convert.ToDateTime(e.Value)).PersianDate; } }
それは完璧に動作します。
しかし問題は、ユーザーが「ペルシャ形式」(例: 1391/12/21) で日付を入力すると、そのようにデータベースに保存され、変換が行われないことです。
persianDate を DateTime に変換する方法は知っていますが、ユーザーが DatagridView でペルシャの日付値を入力し、自動的に DateTime に変換してデータセット、データソース、またはテーブルに保存するコードの記述場所がわかりません。
助けてくれてありがとう。
解決策 1
データベースの種類を使用 DATE
文字列の代わりに、このように、フォーマット/カルチャから抽象化されます。
残りの問題は、表現する際に適切な形式を使用することです DateTime
あなたのUIで。 すべてのメソッドを参照してください ToStrings
:
http://msdn.microsoft.com/en-us/library/system.datetime.aspx[^].
フォーマットはフォーマット文字列、カルチャ (実装されたものを介して) で定義できることに注意してください。 IFormatProvider
、次のコード サンプルを参照してください。 http://msdn.microsoft.com/en-us/library/ht77y576.aspx[^])、 または両方。
フォーマット文字列については、次を参照してください。
http://msdn.microsoft.com/en-us/library/zdtaw1bw.aspx[^]、
http://msdn.microsoft.com/en-us/library/az4se3k1.aspx[^]、
http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx[^].
解決策 2
DataTable table = objSelectAll from tbltest(); Tests t = null; List<Tests>List = new List<Tests>List for(int i=0 ; i<table.row.count ; i++) { t= new Tests(); t.sale-id= int.parse(table.row[i][1].value.tostring()); saleDate= convert (list.where(x => x.fDate) ' '); list.Add t= null; }
[ad_2]
コメント