مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

rezasaveys

عضویت از 1396/08/24

ایجاد یک ستون CheckBox در دیتاگرید WPF

  • پنجشنبه 30 آذر 1396
  • 15:21
تشکر میکنم

با سلام خدمت اساتید

یک برنامه دارم که برای ارسال نامه به کاربران می باشد .

کاربران رو از طریق جدول فراخوانی کردم و اونها رو توی دیتاگرید نمایش دادم . تا اینجای کار مشکلی ندارم .

کد XAML ستون اول من اینطوریه :

 <DataGridCheckBoxColumn Header="انتخاب" Width="50" Binding="{Binding}">
                    <DataGridCheckBoxColumn.HeaderStyle>
                        <Style TargetType="{x:Type DataGridColumnHeader}">
                            <Setter Property="FontFamily" Value="B Mitra"/>
                            <Setter Property="FontSize" Value="15"/>
                            <Setter Property="FontWeight" Value="Bold"/>
                            <Setter Property="HorizontalContentAlignment" Value="Center"/>
                        </Style>
                    </DataGridCheckBoxColumn.HeaderStyle>                    
                </DataGridCheckBoxColumn>

که شکل چک باکس به خوذش گرفته و قابل تیک خوردن و تیک برداشتن هست
اما کد برنامه ی من توی Windows Form که طراحی و پیاده سازیش کردم به شکل زیره

من میخوام اینو توی WPF پیاده سازی کنم . لطفا راهنماییم کنید

 using (TransactionScope ts = new TransactionScope())
            {

                try
                {
                    //// خروج نامه از قسمت پیش نویس
                    var query_Update = (from L in database.Letters where L.LetterID == this.Get_LetterID select L).SingleOrDefault();
                    query_Update.DraftType = 2;
                    query_Update.SendLetterDate = PublicVariable.TodayDate;
                    database.SaveChanges();


                    //// ارسال نامه

                    List<DataGridView> rown_with_check_column = new List<DataGridView>();
                    foreach (DataGridViewRow row in dgv_SelectUserToSendLetter.Rows)
                    {
                        SendLetter SL = new SendLetter();
                        if (Convert.ToBoolean(row.Cells["SelectUser"].Value) == true) 
                        {
                            SL.LetterID = this.Get_LetterID;
                            SL.UserID = Convert.ToInt32(row.Cells["UserID"].Value);
                            SL.ReadType = 0;
                            SL.IsMessage = 0;
                           
                            database.SendLetters.Add(SL);
                        }
                    }

                    database.SaveChanges();
                    ts.Complete();
                    MessageBox.Show("نامه با موفقیت ارسال شد");
                    this.Close();
                }
                catch
                {
                    MessageBox.Show("در ارتباط با سرور مشکلی بوجود آمده است ، لطفا مجددا تلاش نمایید");
                    return;
                }
            }

SelectUser اسم ستون مربوطه به چک باکسه و هدرش هم "انتخاب" می باشد ...

ممنون میشم راهنمماییم کنید ...

پاسخ های این پرسش

تعداد پاسخ ها : 5 پاسخ
کاربر سایت

rezasaveys

عضویت از 1396/08/24

  • یکشنبه 3 دی 1396
  • 19:31

کسی از اساتید راه حلی نداره برای این برنامه ؟؟؟

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • یکشنبه 3 دی 1396
  • 20:13

منظورتون رو متوجه نشدم

لطفا با تصویر مثال بزنید

کاربر سایت

rezasaveys

عضویت از 1396/08/24

  • دوشنبه 4 دی 1396
  • 18:18

یک برنامه رو در نظر بگیرید که کاربرانش قادر به ارسال نامه براک هم هستند . برنامه ای که با sql و دیتایس کار میکنه . حالا یک کاربر یک نامه ایجاد کرده و میخواد اون رو ارسال کنه . بعد از زدن دکمه ارسال نامه ، یک فرم ببراش نمایش داده میشه که لیست کارمندان یا افرادی که توی اون شرکت مشغول به کار هستن رو توش داره . این فرم یک دیتاگرید داره که شامل چند ستونه (ستون اول حالت چک باکس باید داشته باشه تا کاربر بتونه انتخاب کنه ، ستون دوم نام کاربر و ستون سوم هم شغل کاربر) . کاربرهایی رو که میخواد تیک میزنه و بعد دکمه ارسال نامه رو میزنه و نامه برای اون افرادی که انتخاب شدند ارسال میشه .

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

کد نمونه پیاده سازیش شده توی window form  هم توی کامنت های قبلی گذاشتم ...

ممنون میشم راهنمایی کنید ...

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • دوشنبه 4 دی 1396
  • 23:10

مشکل شما در کدام قسمت است ؟

کاربر سایت

rezasaveys

عضویت از 1396/08/24

  • سه شنبه 5 دی 1396
  • 06:37

مشکل من تا اینجا نیست ، بلکه از اینجا به بعده . یعنی زمانیکه روی دکمه ارسال میزنم تا فرایند ارسال صورت بگیره . قطعه کدی شبیه به همین که توی پست اولم گفتم نشوتم ، اما جواب نمیده . BreakPoint گرفتم دیدم بخش اول رو که اجرا میکنه از برنامه خارج میشه و داخل بلاک نمیره ...

List<DataGridView> rown_with_check_column = new List<DataGridView>();
                   foreach (DataGridViewRow row in dgv_SelectUserToSendLetter.Rows)
                   {
                       SendLetter SL = new SendLetter();
                       if (Convert.ToBoolean(row.Cells["SelectUser"].Value) == true) 
                       {
                           SL.LetterID = this.Get_LetterID;
                           SL.UserID = Convert.ToInt32(row.Cells["UserID"].Value);
                           SL.ReadType = 0;
                           SL.IsMessage = 0;
                           
                           database.SendLetters.Add(SL);
                       }
                   }

این بخش رو مشکل دارم . علل خصوص توی دو خط اولش ، البته برای پیاده سازی توی wpf . چون همین کد توی windows Form جواب داده و دارم کار میکنم ...

سپاسگذارم از اساتید محترم ...

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)