سلام استاد
من یک جدول لیست سوییت ها رو دارم داخل این جدول یک کلید خارجی وجود داره بنام PlaceId که لیستی از مکان های هر سوییت بهش وصل میشه
من چطوری میتونم اون لیست مکان ها رو در ComboBox لیست سوییت ها نمایش بدم؟
اینجوری نشون میده هر کاری میکنم..
باید این لیست دوتا آیتم داشته باشه بنام مثلأ کوهسار و فکوری..
<DataGridComboBoxColumn Header="نام مجموعه"
SelectedValueBinding="{Binding Place}"
>
<DataGridComboBoxColumn.ElementStyle>
<Style TargetType="{x:Type ComboBox}">
<Setter Property="ItemsSource" Value="{Binding Path=Place.Name}" />
</Style>
</DataGridComboBoxColumn.ElementStyle>
<DataGridComboBoxColumn.EditingElementStyle>
<Style TargetType="{x:Type ComboBox}">
<Setter Property="ItemsSource" Value="{Binding Path=Place.Name}" />
</Style>
</DataGridComboBoxColumn.EditingElementStyle>
</DataGridComboBoxColumn>
dataContext هم اینه
استاد راه حلی ندارید براش؟
اینو ببینید
این کار میکنه ولی نمیتونم مقدار رو تغییر بدم Enter میزنم مقدار انتخاب شده قرمز رنگ میشه و اجازه تغییر نمیده
<DataGridComboBoxColumn Header="نام مجموعه" SelectedValuePath="{Binding PlaceId}"
DisplayMemberPath="Name"
SelectedItemBinding="{Binding PlaceId , UpdateSourceTrigger=PropertyChanged}"
ItemsSource="{StaticResource PlaceList}">
<DataGridComboBoxColumn.ElementStyle>
<Style TargetType="ComboBox">
<Setter Property="Text" Value="{Binding Place.Name}" />
</Style>
</DataGridComboBoxColumn.ElementStyle>
<DataGridComboBoxColumn.EditingElementStyle>
<Style TargetType="ComboBox" >
<Setter Property="Text" Value="PlaceId"></Setter>
<Setter Property="DisplayMemberPath" Value="{Binding Place.Name}" />
</Style>
</DataGridComboBoxColumn.EditingElementStyle>
</DataGridComboBoxColumn>
سلام، روزتون بخیر
یک سوال ، ارتباط سوئیت و مکان ها به چه صورته ؟
هر مکان چند سوئیت داره، یا هر سوئیت مکان یا مکان های مربوط به خودش رو داره ؟
دیاگرام جداولش رو برام بفرستید .
یک راهکار مناسب برای استفاده از ComboBox در DataGrid ساخت ستون از نوع DataGridTemplateColumn بجای DataGridComboBoxColumn است. در مثال زیر توضیحات لازم برای این روش داده شده است :
سلام استاد ، ممنون از پاسخ تون ، هر مکان میتونه چندین سوییت داشته باشه یعنی یکی از ستون های داخل جدول سوییت مقداری بنام PlaceId هست
استاد خیلی بررسی کردم میخواستم با ComboBox درست کنم وقتی نتونستم با همین Template درست کردم همین لینکی که فرستادین ، ولی وقتی یک مکان رو موقع ویرایش Select میکنم مکان تغییر میکنه و از حالت Selected که خارج میشه همچنان مکان قبلی رو نشون میده به این سه تا تصویر به ترتیب نگاه کنید توی تصویر سوم واقعأ گل سرخ شده ولی داره همچنان کوهسار نشون میده...
<DataGridTemplateColumn Header="مجموعه">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Place.Name, UpdateSourceTrigger=PropertyChanged }"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<ComboBox Name="CmbDgPlaceId" SelectedValuePath="PlaceId"
DisplayMemberPath="Name"
SelectedValue="{Binding Path=PlaceId ,UpdateSourceTrigger=PropertyChanged}"
ItemsSource="{StaticResource PlaceList}"
DropDownClosed="ComboBox_OnDropDownClosed"/>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
نمی تونم نظری بدم، شاید چیزی به درستی تنظیم نشده باشه تا حالا چنین مشکلی نداشتم.
اگر میتونید کل فایل View و Code صفحه رو ارسال کنید یا اینکه اگر پروژه نمونه کد هست کل پروژه رو با دیتابیس اینجا قرار بدید تا چک کنم.
استاد باقرزاده عزیز من نمیخوام خیلی وقتتون رو بگیرم و مشکلاتم رو سعی میکنم خودم حل کنم...
میدونم اینجا
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Place.Name,UpdateSourceTrigger=PropertyChanged }"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
باید یه چیزی بزارم تا درست بشه
چون وقتی Select میکنم از DataGridTemplateColumn.CellEditingTemplate استفاده میکنه و درسته ولی در حالت Deselect از DataGridTemplateColumn.CellTemplate میخونه و همون قبلی رو نشون میده..
وقتی ویرایش میزنم درست کار میکنه فقط توی نمایش این شکلی نشون میده..
مثلا وقتی Binding Place.Name رو به Binding PlaceId تغییر میدم درست کار میکنه و موقع Deselect آی دی مکان بدرستی نمایش داده میشه ولی من باید نام رو نشون بدم...
توی Combobox دوتا خاصیت Value و Name وجود داره درحالی که در textBox فقط خاصیت text وجود داره