سوال

مقدار دهی DataTable از طریق DataGrid در WPF (به کمک #C)

بازدید246پست ها0آخرین فعالیت2 سال پیش
-1
1

سلام (برای این سوال 50 هزار تومان 💲💲💲 پاداش نقدی کارت به کارت می کنم)
اصل سوال رو به همراه تصاویر برنامه در وب گاه پرسش و پاسخ Microsoft قرار دادم این هم پیوند سوالم حتماً ببینید.
من یک DataGrid (نه DataGridView) دارم که 18 تا ستون داره (از 0 تا 17) ، که ستون آخر اون از نوع system.windows.controls.image است و بدون هیچ مشکلی تصویر در اون قرار می گیره حالا من نیاز دارم که ردیف های DataGrid رو درون DataTable قرار بدم ، به غیر از ستون آخر ، می تونم مقادیر تمامی ستون ها رو دریافت کنم برای ستون آخر هم کد هایی نوشتم اما مقداری بر نمی گردونه (خطا Null نمیده اما مقدار هم بر نمی گردونه) اگر کسی می تونه کمک کنه ممنون میشم.

     DataTable BookDT = new DataTable();
     public MainWindow()
     {
         InitializeComponent();
         BookDT.Columns.Clear();
         BookDT.Columns.Add("BookName", typeof(string));
         BookDT.Columns.Add("Publisher", typeof(string));
         BookDT.Columns.Add("Category", typeof(string));
         BookDT.Columns.Add("BookCode", typeof(string));
         BookDT.Columns.Add("Inventory", typeof(string));
         BookDT.Columns.Add("DateTaken", typeof(string));
         BookDT.Columns.Add("RecipientName", typeof(string));
         BookDT.Columns.Add("ReturnDate", typeof(string));
         BookDT.Columns.Add("ReleaseDate", typeof(string));
         BookDT.Columns.Add("BookLanguage", typeof(string));
         BookDT.Columns.Add("Length", typeof(string));
         BookDT.Columns.Add("Form", typeof(string));
         BookDT.Columns.Add("Translator", typeof(string));
         BookDT.Columns.Add("Narrator", typeof(string));
         BookDT.Columns.Add("ISBN", typeof(string));
         BookDT.Columns.Add("Location", typeof(string));
         BookDT.Columns.Add("Price", typeof(string));
         BookDT.Columns.Add("BookImage", typeof(byte[]));
     }
     public BitmapImage ConvertWriteableBitmapToBitmapImage(WriteableBitmap wbm)
     {
         BitmapImage bmImage = new BitmapImage();
         using (System.IO.MemoryStream stream = new System.IO.MemoryStream())
         {
             PngBitmapEncoder encoder = new PngBitmapEncoder();
             encoder.Frames.Add(BitmapFrame.Create(wbm));
             encoder.Save(stream);
             bmImage.BeginInit();
             bmImage.CacheOption = BitmapCacheOption.OnLoad;
             bmImage.StreamSource = stream;
             bmImage.EndInit();
             bmImage.Freeze();
         }
         return bmImage;
     }
     public DataTable DataGridToDataTable(DataGrid DG, DataTable DT, byte NumberOfColumns, byte VisualColumnIndex)
     {
         for (int i = 0; i < DG.SelectedItems.Count - 1; i++)
         {
             for (byte j = 0; j < NumberOfColumns; j++)
             {
                 DT.Rows.Add(DG.SelectedItems[i]);
                 switch (j == VisualColumnIndex)
                 {
                     case true:
                         Image TempImage = new Image() { Source = (VisualTreeHelper.GetChild(DG.Columns[j].GetCellContent(DG.SelectedItems[i]), 0) as Image).Source };
                         DT.Rows[i][j] = ImageToBytes(ConvertWriteableBitmapToBitmapImage(new WriteableBitmap((BitmapSource)TempImage.Source)));
                         break;
                     default:
                         DT.Rows[i][j] = (((DG.Columns[j].GetCellContent((DataGridRow)DG.ItemContainerGenerator.ContainerFromIndex(i))) as TextBlock).Text).ToString();
                         break;
                 }
             }
         }
         return DT;
     }

و به شکل زیر از متدم استفاده می کنم:

BookDT = DataGridToDataTable(BookDataGrid, BookDT, 18, 17);

تـــــوجه: از برنامه خروجی بگیرید بعد پاسخ بفرستید تا امتیاز دریافت کنید (پاسخ الکی ندهید)
با تشکــر

آخرین ویرایش: 09-03-2022 ???? 12:44، توسط رضا جافری دلیل: تغییر نشانی پیوند سوال
50 هزار تومان پاداش داره تا قبل از اینکه خودم راه حل رو پیدا کنم – رضا جافری 2 سال پیش
سلام ، خدا رو شکر بامداد امروز جوابشو پیدا کردم ، جواب که تکمیل شد بعد برای استفاده عموم قرار میدم ، فقط اینو بگم که اعضای مایکروسافت هم جواب درست بهم ندادند و اگه خدا بخواد تا روز های آینده جواب کامل رو همراه با خروجی تصویری قرار می دم با تشکــر – رضا جافری 2 سال پیش
متاسفانه اعتبار کافی برای پاسخ به سوالم در این وبگاه ندارم ، پاسخ کامل به همراه توضیحات انگلیسی و همچنین خروجی تصویری (برای درستی پاسخ) در همون جایی که اول سوال پرسیده بودم یعنی https://docs.microsoft.com/en-us/answers/questions/743259/converting-datagrid-to-datatable-in-wpf-by-c.html دادم. – رضا جافری 2 سال پیش

سوال برنامه نویسی دارید؟

ندونستن عیب نیست، نپرسیدن چرا!

این سوال حل نشده است!

این سوال هنوز حل نشده یا به پاسخ بهتری نیاز دارد. برای پاسخ به این سوال کافیست وارد حساب کاربری خود شوید.