PDA

View Full Version : سوال: قرار دادن دکمه حذف و آپدیت در هر سطر از گرید



Omid Baluch Gharaei
سه شنبه 24 آذر 1394, 11:42 صبح
سلام استادان عزیز.وقتتون بخیر

من میخام تو هر سطر از گرید یک دکمه برای حذف و یک دکمه برای آپدیت همون سطر قرار بدم، که وقتی کاربر مثلا روی حذف کلیک کرد همون سطر ،هم از گرید حذف بشه وهم از دیتابیس.
وبرای آپدیت هم اگر کاربر مقادیر گرید رو تغییر داد و روی دکمه آپدیت کلیک کرد داخل دیتابیس هم با توجه به فیلدی که کلید هست آپدیت بشه...

ممنون میشم کمکم کنین

Mani_rf
سه شنبه 24 آذر 1394, 12:31 عصر
سلام استادان عزیز.وقتتون بخیر

من میخام تو هر سطر از گرید یک دکمه برای حذف و یک دکمه برای آپدیت همون سطر قرار بدم، که وقتی کاربر مثلا روی حذف کلیک کرد همون سطر ،هم از گرید حذف بشه وهم از دیتابیس.
وبرای آپدیت هم اگر کاربر مقادیر گرید رو تغییر داد و روی دکمه آپدیت کلیک کرد داخل دیتابیس هم با توجه به فیلدی که کلید هست آپدیت بشه...

ممنون میشم کمکم کنین

برای این کار باید گرید رو از حالت AutoGenerateColumns خارج کنید و علاوه بر ستون های اطلاعاتی دو ستون از نوع DataGridTemplateColumn تعریف کنید که توی اون دکمه ها رو تعریف کرده باشید.

<DataGrid ItemsSource="{Binding Results}" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="FriendlyName"
Binding="{Binding FriendlyName}"/>
<DataGridTextColumn Header="Id"
Binding="{Binding Id}"/>
<DataGridTemplateColumn Header="Delete">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button Content="Delete"
Command="Delete"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>

همه دکمه ها رو به یک Event Handler وصل کنید و از طریق Sender بفهمین که دکمه کدوم سطر کلیک شده و عملیات مورد نظر رو انجام دهید.

Omid Baluch Gharaei
سه شنبه 24 آذر 1394, 14:24 عصر
ممنون از مدیر عزیز.
میشه در مورد کدهاش یکم توضیح بدین.
به نظر من بهتره وقتی که روی دکمه کلیک میشه متنه یکی از سلول هارو که به عنوان کلید در دیتابیس تعریف شده بگیرم و بعد براساس اون حذف رئ انجام بدم.
اما نمیدونم چجوری؟؟از نظرات دوستان هم استفاده کردم در تاپیک های دیگه ولی جواب نداد.
چیکاکنم حالا؟؟

Mani_rf
سه شنبه 24 آذر 1394, 15:11 عصر
تو WPF اگر بایندیگ ها رو درست اجرا کرد ه باشید هر سطر گیرید، یک آبجکت از نوع کلاسی هست که شما بهش بایند کردید. برای مثال اگر شما ItemsSource گرید رو برابر با یک لیست از نوع دانش آموزان قرار دادید:


List<Student> std = new List<Student>();
dgv.ItemsSource = std;



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

Omid Baluch Gharaei
سه شنبه 24 آذر 1394, 15:24 عصر
ممنون از شما ولی من دقیق متوجه نشدم چی گفتین..:ناراحت::ناراحت:
الان من باید چیکار کنم؟؟

Mani_rf
سه شنبه 24 آذر 1394, 19:36 عصر
دقیقا کجاش رو متوجه نشدی!

Omid Baluch Gharaei
سه شنبه 24 آذر 1394, 21:43 عصر
137462

سلام مجدد.این تصویری که میبینین دقیقا کاریه که من میخام انجام بدم.چه کاری؟؟؟
رو دکمه deleterow داخل هر سطر که کلیک کردم همون سطر حذف بشه (البته از دیتابیس) و بعد گریدم رفرش بشه.که دستور رفرشو میدونم.
من تو همین گیر کردم که چجوری این کارو ،ینی حذف رو انجام بدم.؟؟!!
در اینجا نام کاربری به عنوان کلید در دیتابیس تعریف شده.
پیشاپیش ممنون از راهنمایی شما

Mani_rf
چهارشنبه 25 آذر 1394, 08:55 صبح
قسمت رو که لیست اطلاعات رو داری به گرید میدی رو بزار ببینم چطوری دیتا رو توی گرید ریختی

Omid Baluch Gharaei
چهارشنبه 25 آذر 1394, 15:07 عصر
قسمت رو که لیست اطلاعات رو داری به گرید میدی رو بزار ببینم چطوری دیتا رو توی گرید ریختی

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

ولی چیزی که مهمه اینه که من هنوز تو حذف گیر کردم...