powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / DataGrid + WPF
25 сообщений из 43, страница 1 из 2
DataGrid + WPF
    #36321033
DATAGRID_WPF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Помнится в WinForms у DataGridView был виртуальный режим отображения данных http://msdn.microsoft.com/ru-ru/library/ms171622.aspx. Есть ли что-то подобное у DataGrid в WPF? Если нет, то каким же образом, например, обрабатывать крупные объёмы данных?
PS Про то, что грузить на клиента большое кол-во записей нет смысла, знаю!
...
Рейтинг: 0 / 0
DataGrid + WPF
    #36321507
eJack
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DATAGRID_WPF,

ListView.View = GridView

и еще есть DataGrid в wpftoolkit
http://wpf.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=29117
...
Рейтинг: 0 / 0
DataGrid + WPF
    #36321581
koJIo6ok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
eJack,
объясникте плз что такое wpftoolkit? вы пишите что там есть DataGrid - те можно скачать поставить и будет в приложении WPF датагрид аналог datagridview c winforms?
...
Рейтинг: 0 / 0
DataGrid + WPF
    #36322642
toolkit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
koJIo6ok,

Вам тоже злой админ отключил гугл?

http://wpf.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=29117
...
Рейтинг: 0 / 0
DataGrid + WPF
    #36322733
koJIo6ok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я сам админ
помогите разобраться с ним плз, на winforms у меня было
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
//plan
With Me.DataSet1.Tables.Add("plan")
.Columns.Add("id_plg", GetType(Integer))
.Columns.Add("id_org_ob", GetType(Integer)).Unique = True
.Columns.Add("План на год, руб.", GetType(Decimal)).DefaultValue = 0
.Columns.Add("Оборудование в том числе, руб.", GetType(Decimal)).DefaultValue = 0
.PrimaryKey = New DataColumn() {.Columns.Item(0)}
.Columns.Item(0).AutoIncrement = True
.Columns.Item(0).AutoIncrementSeed = -1
.Columns.Item(0).AutoIncrementStep = -1
.Columns.Item(2).AllowDBNull = False
.Columns.Item(3).AllowDBNull = False
End With
Dim tableMap As DataTableMapping
tableMap = Me.SqlDataAdapter1.TableMappings.Add("Table1", "sp")
tableMap = Me.SqlDataAdapter1.TableMappings.Add("Table", "plan")
Dim columnMaps = New DataColumnMapping() _
{New DataColumnMapping("id_plg", "id_plg"), _
New DataColumnMapping("id_org_ob", "id_org_ob"), _
New DataColumnMapping("plan_o", "План на год, руб."), _
New DataColumnMapping("obor_o", "Оборудование в том числе, руб.")}
tableMap.ColumnMappings.AddRange(columnMaps)
//sp_fil
With Me.DataSet1.Tables.Add("sp")
.Columns.Add("id_na_ob", GetType(Integer))
.Columns.Add("nazv", GetType(String))
End With
//подст столбец
Dim col As New DataGridViewComboBoxColumn
col.Name = "podst_nazv"
col.HeaderText = "Название организации"
col.DataPropertyName = "id_org_ob"
col.DataSource = Me.DataSet1.Tables(1)
col.DisplayMember = "nazv"
col.ValueMember = "id_na_ob"
col.DisplayStyle = DataGridViewComboBoxDisplayStyle.ComboBox
col.MaxDropDownItems = 6
Me.DataGridView1.Columns.Add(col)
//select command plan
cn.Open()
Me.SqlDataAdapter1.Fill(Me.DataSet1)
cn.Close()
                
Me.BindingSource1.DataSource = Me.DataSet1.Tables(0)
Me.DataGridView1.Columns.Item(0).Visible = False
здесь же никак не могу пристроить комбобокс колумн
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
void myDgColumnAdd()
{
   DataTemplate dt;
   Binding bind;
   string _strFormat = "{0:N1}";
   //0
   dt = new DataTemplate(typeof(string));
   FrameworkElementFactory factoryTXT = new FrameworkElementFactory(typeof(TextBlock));
   bind = new Binding("[0]") { Mode = BindingMode.TwoWay };
   factoryTXT.SetBinding(TextBlock.TextProperty, bind); 
   dt.VisualTree = factoryTXT;
   DataGridTemplateColumn txtCol = new DataGridTemplateColumn { Header = "id_plg", CellTemplate = dt };
   myDg.Columns.Add(txtCol);
   // 1
   dt = new DataTemplate(typeof(string));
   factoryTXT = new FrameworkElementFactory(typeof(TextBlock));
   bind = new Binding("[1]") { Mode = BindingMode.TwoWay };
   factoryTXT.SetBinding(TextBlock.TextProperty, bind); 
   dt.VisualTree = factoryTXT;
   txtCol = new DataGridTemplateColumn { Header = "id_org_ob", CellTemplate = dt };                     
   myDg.Columns.Add(txtCol);
   // 2
   dt = new DataTemplate(typeof(string));
   factoryTXT = new FrameworkElementFactory(typeof(TextBox));
   factoryTXT.SetValue(TextBox.TextAlignmentProperty, TextAlignment.Right);            
   bind = new Binding("[2]")
      {
         Converter = new myConverter(),
         ConverterParameter = _strFormat,
         Mode = BindingMode.TwoWay
      };
   factoryTXT.SetBinding(TextBox.TextProperty, bind);  
   dt.VisualTree = factoryTXT;
   txtCol = new DataGridTemplateColumn { Header = "План на год, руб.", CellTemplate = dt };                     
   myDg.Columns.Add(txtCol);
   // 3
   dt = new DataTemplate(typeof(string));
   factoryTXT = new FrameworkElementFactory(typeof(TextBox));
   factoryTXT.SetValue(TextBox.TextAlignmentProperty, TextAlignment.Right);            
   bind = new Binding("[3]")
      {
      Converter = new myConverter(),
      ConverterParameter = _strFormat,
      Mode = BindingMode.TwoWay
      };
   factoryTXT.SetBinding(TextBox.TextProperty, bind);
   dt.VisualTree = factoryTXT;
   txtCol = new DataGridTemplateColumn { Header = "Оборудование в том числе, руб.", CellTemplate = dt };                      
   myDg.Columns.Add(txtCol);
   // комбобокс, что знал то и написал - в итоге канешн не рабоает :)))
   DataGridComboBoxColumn cbCol = new DataGridComboBoxColumn();            
   cbCol.Header = "Название организации";
   cbCol.ItemsSource = ds.Tables[1].Rows;
   cbCol.SelectedValuePath = "id";
   cbCol.DisplayMemberPath = "name";
   cbCol.SelectedItemBinding = new Binding("id");
   cbCol.TextBinding = new Binding("[1]");            
   myDg.Columns.Add(cbCol);
   }
...
Рейтинг: 0 / 0
DataGrid + WPF
    #36323027
koJIo6ok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
никто его не использовал что-ли?
...
Рейтинг: 0 / 0
DataGrid + WPF
    #36323291
koJIo6ok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
получается задать столбец с комбобоксом - но он не привязан к данным строки
и получается задать столбез связанный с данными строки но без комбобокса
чего не хватает?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
dt = new DataTemplate();
factoryTXT = new FrameworkElementFactory(typeof(ComboBox));
factoryTXT.SetValue(ComboBox.ItemsSourceProperty, ds.Tables[1].Rows);
factoryTXT.SetValue(ComboBox.SelectedValuePathProperty, "[0]");
factoryTXT.SetValue(ComboBox.DisplayMemberPathProperty, "[1]");                        
dt.VisualTree = factoryTXT;
txtCol = new DataGridTemplateColumn { Header = "Название организации", CellTemplate = dt };            
myDg.Columns.Add(txtCol);
// комбобокс
DataGridComboBoxColumn cbCol = new DataGridComboBoxColumn { Header = "Название организации" };
cbCol.ItemsSource = ds.Tables[1].Rows;
cbCol.SelectedValuePath = "[0]";
cbCol.DisplayMemberPath = "[1]";
bind = new Binding("[1]")
   {                
      Mode = BindingMode.TwoWay
    };
cbCol.SelectedValueBinding = bind;                
myDg.Columns.Add(cbCol);
...
Рейтинг: 0 / 0
DataGrid + WPF
    #36323401
koJIo6ok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну чего я такой темный
...
Рейтинг: 0 / 0
DataGrid + WPF
    #36323402
koJIo6ok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
все же так просто
...
Рейтинг: 0 / 0
DataGrid + WPF
    #36323682
eJack
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
koJIo6ok,

Учите xaml там с помощью шаблона все делается в три минуты и пять строчек кода :)
...
Рейтинг: 0 / 0
DataGrid + WPF
    #36323686
eJack
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
<my:DataGrid Name="dataGrid1">
            <my:DataGrid.Columns>
                <my:DataGridTextColumn Header="ИД"/>
                <my:DataGridComboBoxColumn Header="Название организации" />
            </my:DataGrid.Columns>
        </my:DataGrid>
...
Рейтинг: 0 / 0
DataGrid + WPF
    #36324138
koJIo6ok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
eJack,
там нечего учить, все просто но меня он бодрит
...
Рейтинг: 0 / 0
DataGrid + WPF
    #36325044
eJack
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
koJIo6okeJack,
там нечего учить, все просто но меня он бодрит

Это так в начале - потом вообще от него не отторвешь - у меня одно время было я вообще хотел как можно больше написать на xaml. Потом прошло :)

Но он реально помогает в "написании" гуя - все просто и кратко и главное понятно. Посмотрите на свой код в шарпе - это ужас его сопровождать бррр....

Хотя если пишите для себя - то можно всё !
...
Рейтинг: 0 / 0
DataGrid + WPF
    #36325086
koJIo6ok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
eJack,
что бы писать на xaml надо создавать окно? опять получится мульён форм отличающихся иногда минимально
...
Рейтинг: 0 / 0
DataGrid + WPF
    #36325600
koJIo6ok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кто-нибудь связывал DataGrid и DataTable в BindingMode.TwoWay ?
...
Рейтинг: 0 / 0
DataGrid + WPF
    #36326395
Фотография barrabas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
koJIo6okeJack,
что бы писать на xaml надо создавать окно? опять получится мульён форм отличающихся иногда минимально
нужно разносить отображение и работу с данными по разным сущностям, форма не должна знать про данные, она просто показывает. Всю работу по выборке данных и помещения их на форму, должен делать другой класс/классы, его и наследуй и изменяй как хочешь под задачу.
Например форма "справочник", это одни класс-окно с гридом, меню, кнопками ..., есть базовый класс управления формой справочника, в нем базовые вещи, виртуальные методы сохранения размеров окна и колонок в гриде, скрытия/отображения/добавяления кнопок меню, добавления колонок грида, заполнения данными, выгрузка в ексель, выбор поведения (возврат выбранного элемента/элементов или просто показ их) ...
И от базового класса наследуешься, переопределяешь заполнение, добавление добавляешь нужные колонки, выбираешь поведение - всё справочник готов.
однотиптые справочники штампуются за минукту.
...
Рейтинг: 0 / 0
DataGrid + WPF
    #36326732
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не только форма не должна знать про данные, но и класс(ViewModel) не должен знать о форме.
авторсохранения размеров окна и колонок в гриде, скрытия/отображения/добавяления кнопок меню, добавления колонок грида, подобного функционала он не должен содержать.
...
Рейтинг: 0 / 0
DataGrid + WPF
    #36326785
Фотография Roman S. Golubin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaНе только форма не должна знать про данные, но и класс(ViewModel) не должен знать о форме.
Одновременно друг о друге совсем не знать они не могут. Для случая MVVM, View все знает о ViewModel, ViewModel ничего не знает о View.
...
Рейтинг: 0 / 0
DataGrid + WPF
    #36327005
koJIo6ok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
господа, планета в опасности, а вы...
ну помогите связать DataTable и DataGrid
я сделал
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
ds.Tables.Add("plg");
// plg
ds.Tables[0].Columns.Add("id_plg", typeof(int));
ds.Tables[0].Columns.Add("id_org_ob", typeof(int));
ds.Tables[0].Columns.Add("plan_o", typeof(decimal)).DefaultValue = 0;
ds.Tables[0].Columns.Add("obor_o", typeof(decimal)).DefaultValue = 0;
ds.Tables[0].PrimaryKey = new DataColumn[] { ds.Tables[0].Columns[0] };
ds.Tables[0].Columns[0].AutoIncrement = true;
ds.Tables[0].Columns[0].AutoIncrementSeed = -1;
ds.Tables[0].Columns[0].AutoIncrementStep = -1;            
ds.Tables[0].Columns[1].Unique = true;
ds.Tables[0].Columns[2].AllowDBNull = false;
ds.Tables[0].Columns[3].AllowDBNull = false;
ds.EnforceConstraints = true;
// список 
ds.Tables.Add("sp");
ds.Tables[1].Columns.Add("id", typeof(int));
ds.Tables[1].Columns.Add("name", typeof(string));            
ds.Tables[1].PrimaryKey = new DataColumn[] { ds.Tables[1].Columns[0] };
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
void frmObjectOrgPlg_Loaded(object sender, RoutedEventArgs e)
        {
            dsSelect();
            myDgColumnAdd();
            myDg.DataContext = ds.Tables[0];
            Binding bind = new Binding()
            {
                Mode = BindingMode.TwoWay,
                Path = new PropertyPath(".")
            };

            myDg.SetBinding(DataGrid.ItemsSourceProperty, bind);     
        }   
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
void myDgColumnAdd()
{            
   Binding bind;            
   // 0 комбобокс
   DataGridComboBoxColumn cbCol = new DataGridComboBoxColumn { Header = "Название организации" };
   cbCol.ItemsSource = ds.Tables[1].Rows;
   cbCol.SelectedValuePath = "[0]";
   cbCol.DisplayMemberPath = "[1]";
   bind = new Binding("[1]")
      {                
         Mode = BindingMode.TwoWay                
      };
   cbCol.SelectedValueBinding = bind;           
   myDg.Columns.Add(cbCol);                
   // 2
   bind = new Binding("[2]")
      {
         Converter = new myConverter(),
         ConverterParameter = "{0:N1}",
         Mode = BindingMode.TwoWay
      };
   bind.ValidationRules.Add(new AllDecimalRule(0, 999999999.9m));
   Style st = new Style();
   Setter settet = new Setter(DataGridCell.HorizontalAlignmentProperty, HorizontalAlignment.Stretch);
   st.Setters.Add(settet);
   DataGridTextColumn txtCol = new DataGridTextColumn { Header = "план на год, руб.", Binding = bind, CellStyle = st };
   myDg.Columns.Add(txtCol);      
   // 3
   bind = new Binding("[3]")
   {
      Converter = new myConverter(),
      ConverterParameter = "{0:N1}",
      Mode = BindingMode.TwoWay
   };
   bind.ValidationRules.Add(new AllDecimalRule(0, 999999999.9m));
   txtCol = new DataGridTextColumn { Header = "в т.ч. оборудование, руб.", Binding = bind, CellStyle = st };
   myDg.Columns.Add(txtCol);
}

но ограничения на таблице не работают, не подставляются значения по умолчанию в новую строку - привязка только в одну сторону выходит? в две не вышло из-за -
автор
Для появления уведомления об изменении привязки клиента и источника данных связанный тип должен:
Либо реализовать интерфейс INotifyPropertyChanged (предпочтительный вариант).
Либо обеспечить событие изменения для каждого свойства связанного типа.
Либо не выполнять ни то, ни другое.
...
Рейтинг: 0 / 0
DataGrid + WPF
    #36327115
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman S. GolubinSeVaНе только форма не должна знать про данные, но и класс(ViewModel) не должен знать о форме.
Одновременно друг о друге совсем не знать они не могут. Для случая MVVM, View все знает о ViewModel, ViewModel ничего не знает о View.
Что знает подобное View о ViewModel?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
<navigation:Page x:Class="Shell.UIShell" 
///////        
   Title="UIShell Page">
    <Grid x:Name="LayoutRoot" Background="Black">
                <ItemsControl x:Name="MainRegion" cal:RegionManager.RegionName="MainRegion" />
                <ItemsControl x:Name="ActionsPaneRegion" cal:RegionManager.RegionName="ActionsPaneRegion" />
    </Grid>
</navigation:Page>

...
Рейтинг: 0 / 0
DataGrid + WPF
    #36327282
SokolNik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVa,

зачем ты с мусей общаешься
он ж дебил
...
Рейтинг: 0 / 0
DataGrid + WPF
    #36327403
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SokolNikSeVa,

зачем ты с мусей общаешься
он ж дебил
Я и сам себе такой вопрос задаю, но достала эта хамка трамвайная.
...
Рейтинг: 0 / 0
DataGrid + WPF
    #36327411
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DATAGRID_WPFПомнится в WinForms у DataGridView был виртуальный режим отображения данных http://msdn.microsoft.com/ru-ru/library/ms171622.aspx. Есть ли что-то подобное у DataGrid в WPF? Если нет, то каким же образом, например, обрабатывать крупные объёмы данных?
PS Про то, что грузить на клиента большое кол-во записей нет смысла, знаю!
Виртуализация данных в WPF не поддерживается контролами,народ изголяется по-разному
Инетерсная статья на эту тему Data virtualization .
...
Рейтинг: 0 / 0
DataGrid + WPF
    #36327457
koJIo6ok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спасибо что не отказали
...
Рейтинг: 0 / 0
DataGrid + WPF
    #36327602
Фотография Roman S. Golubin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaЧто знает подобное View о ViewModel?
Есть ли у этого View вообще ViewModel?
...
Рейтинг: 0 / 0
25 сообщений из 43, страница 1 из 2
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / DataGrid + WPF
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]