Скажите можно ли связать данные отображаемые в DataGrid с PropertyGrid ?
в первом хотелось бы отображать данные в виде таблицы, а во втором позволять редактировать отдельные записи
тоесть в данном случае наверное речь идёт о связи PropertyGrid с DataSet
Мне кажется получилась бы неплохая форма для работы с базой данных
Здравствуйте, Аноним, Вы писали:
А>Скажите можно ли связать данные отображаемые в DataGrid с PropertyGrid ? А>в первом хотелось бы отображать данные в виде таблицы, а во втором позволять редактировать отдельные записи А>тоесть в данном случае наверное речь идёт о связи PropertyGrid с DataSet А>Мне кажется получилась бы неплохая форма для работы с базой данных
А>Есть ли у кого пример кода ?
нужно получить DataRowView(он есть ICustomTypeDescriptor) для текущей строки и передать ссылку на него в свойство SelectedObject Property грида
Das Reich der Freiheit beginnt da, wo die Arbeit aufhört. (c) Karl Marx
Re[2]: DataGrid + PropertyGrid
От:
Аноним
Дата:
14.07.05 07:21
Оценка:
Здравствуйте, ksg71, Вы писали:
K>Здравствуйте, Аноним, Вы писали:
А>>Скажите можно ли связать данные отображаемые в DataGrid с PropertyGrid ? А>>в первом хотелось бы отображать данные в виде таблицы, а во втором позволять редактировать отдельные записи А>>тоесть в данном случае наверное речь идёт о связи PropertyGrid с DataSet А>>Мне кажется получилась бы неплохая форма для работы с базой данных
А>>Есть ли у кого пример кода ?
K>нужно получить DataRowView(он есть ICustomTypeDescriptor) для текущей строки и передать ссылку на него в свойство SelectedObject Property грида
Да это получилось, спасибо
возникает следующий вопрос, как переименовать имена полей отображаемых в propertygrid ?
и ещё придётся к определённым полям добавлять выпадающие списки, чтобы с помощью них их можно было редактировать записи в PropertyGrid. Подскажите пожалуйста хороший способ
Я использую TypedDataset. Может в XML Designer есть способы для назначения этих возможностей ?
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, ksg71, Вы писали:
K>>Здравствуйте, Аноним, Вы писали:
А>>>Скажите можно ли связать данные отображаемые в DataGrid с PropertyGrid ? А>>>в первом хотелось бы отображать данные в виде таблицы, а во втором позволять редактировать отдельные записи А>>>тоесть в данном случае наверное речь идёт о связи PropertyGrid с DataSet А>>>Мне кажется получилась бы неплохая форма для работы с базой данных
А>>>Есть ли у кого пример кода ?
K>>нужно получить DataRowView(он есть ICustomTypeDescriptor) для текущей строки и передать ссылку на него в свойство SelectedObject Property грида
А>Да это получилось, спасибо А>возникает следующий вопрос, как переименовать имена полей отображаемых в propertygrid ? А>и ещё придётся к определённым полям добавлять выпадающие списки, чтобы с помощью них их можно было редактировать записи в PropertyGrid. Подскажите пожалуйста хороший способ А>Я использую TypedDataset. Может в XML Designer есть способы для назначения этих возможностей ?
Я бы написал класс реализующий ICustomTypeDescriptor, берущий данные из DataRow, для столбцов —
некие MyColumnPropertyDescriptor : PropertyDescriptor, для переименования нужно в конструктор
PropertyDescriptor'а передавать "имя свойства", которое видно в PropertyGrid'e. Чтобы грид рисовал ввыпадающий список, самое простое — свойство PropertyDescriptor.PropertyType должно возвращать тип некого enum'a
Das Reich der Freiheit beginnt da, wo die Arbeit aufhört. (c) Karl Marx
Re[4]: DataGrid + PropertyGrid
От:
Аноним
Дата:
14.07.05 10:33
Оценка:
Здравствуйте, ksg71, Вы писали:
K>Здравствуйте, Аноним, Вы писали:
А>>Здравствуйте, ksg71, Вы писали:
K>>>Здравствуйте, Аноним, Вы писали:
А>>>>Скажите можно ли связать данные отображаемые в DataGrid с PropertyGrid ? А>>>>в первом хотелось бы отображать данные в виде таблицы, а во втором позволять редактировать отдельные записи А>>>>тоесть в данном случае наверное речь идёт о связи PropertyGrid с DataSet А>>>>Мне кажется получилась бы неплохая форма для работы с базой данных
А>>>>Есть ли у кого пример кода ?
K>>>нужно получить DataRowView(он есть ICustomTypeDescriptor) для текущей строки и передать ссылку на него в свойство SelectedObject Property грида
А>>Да это получилось, спасибо А>>возникает следующий вопрос, как переименовать имена полей отображаемых в propertygrid ? А>>и ещё придётся к определённым полям добавлять выпадающие списки, чтобы с помощью них их можно было редактировать записи в PropertyGrid. Подскажите пожалуйста хороший способ А>>Я использую TypedDataset. Может в XML Designer есть способы для назначения этих возможностей ?
K>Я бы написал класс реализующий ICustomTypeDescriptor, берущий данные из DataRow, для столбцов — K>некие MyColumnPropertyDescriptor : PropertyDescriptor, для переименования нужно в конструктор K>PropertyDescriptor'а передавать "имя свойства", которое видно в PropertyGrid'e. Чтобы грид рисовал ввыпадающий список, самое простое — свойство PropertyDescriptor.PropertyType должно возвращать тип некого enum'a
Понял, спасибо, буду пытаться
правда пока не совсем осознаю с чего начать
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, ksg71, Вы писали:
K>>Здравствуйте, Аноним, Вы писали:
А>>>Здравствуйте, ksg71, Вы писали:
K>>>>Здравствуйте, Аноним, Вы писали:
А>>>>>Скажите можно ли связать данные отображаемые в DataGrid с PropertyGrid ? А>>>>>в первом хотелось бы отображать данные в виде таблицы, а во втором позволять редактировать отдельные записи А>>>>>тоесть в данном случае наверное речь идёт о связи PropertyGrid с DataSet А>>>>>Мне кажется получилась бы неплохая форма для работы с базой данных
А>>>>>Есть ли у кого пример кода ?
K>>>>нужно получить DataRowView(он есть ICustomTypeDescriptor) для текущей строки и передать ссылку на него в свойство SelectedObject Property грида
А>>>Да это получилось, спасибо А>>>возникает следующий вопрос, как переименовать имена полей отображаемых в propertygrid ? А>>>и ещё придётся к определённым полям добавлять выпадающие списки, чтобы с помощью них их можно было редактировать записи в PropertyGrid. Подскажите пожалуйста хороший способ А>>>Я использую TypedDataset. Может в XML Designer есть способы для назначения этих возможностей ?
K>>Я бы написал класс реализующий ICustomTypeDescriptor, берущий данные из DataRow, для столбцов — K>>некие MyColumnPropertyDescriptor : PropertyDescriptor, для переименования нужно в конструктор K>>PropertyDescriptor'а передавать "имя свойства", которое видно в PropertyGrid'e. Чтобы грид рисовал ввыпадающий список, самое простое — свойство PropertyDescriptor.PropertyType должно возвращать тип некого enum'a
А>Понял, спасибо, буду пытаться А>правда пока не совсем осознаю с чего начать
Для начала посмотри рефлектором, как устроен DataRowView и DataColumnPropertyDescriptor
Das Reich der Freiheit beginnt da, wo die Arbeit aufhört. (c) Karl Marx
Re[6]: DataGrid + PropertyGrid
От:
Аноним
Дата:
14.07.05 12:22
Оценка:
извините может за тупой вопрос
рефлектор — это наверное какая то утилита от Visual Studio ?
Re[7]: DataGrid + PropertyGrid
От:
Аноним
Дата:
19.07.05 07:52
Оценка:
Заголовки полей переименовать получилось, сейчас не могу в PropertyGrid добавить выпадающие списки, которые позволяли бы выбирать для полей таблицы представляющих внешние ключи список из главных таблиц находящихся в том же DataSet
В методах GetValue и PropertyType была тестовая попытка создать выпадающий список, но почему то вместо этого я наблюдаю редактор для коллекции строк
using System;
using System.Text;
using System.ComponentModel;
using System.Data;
namespace CIS
{
public class RowsProperty: ICustomTypeDescriptor
{
public object Value;
PropertyDescriptorCollection propsCollection;
public RowsProperty(object inf)
{
Value = inf;
propsCollection = new PropertyDescriptorCollection(null);
PropertyDescriptorCollection pdc = TypeDescriptor.GetProperties(inf);//(obj, true);for(int i=0; i<pdc.Count; i++)
{
MyPropDesc mpd = new MyPropDesc(pdc[i], (inf as System.Data.DataRowView).DataView.Table.Columns[i].Caption);
propsCollection.Add(mpd);
}
}
/////////////////////////////////////////////////////////
/// ICustomTypeDescriptor
///
AttributeCollection ICustomTypeDescriptor.GetAttributes()
{
return new AttributeCollection(null);
}
string ICustomTypeDescriptor.GetClassName() { return null; }
string ICustomTypeDescriptor.GetComponentName() { return null; }
TypeConverter ICustomTypeDescriptor.GetConverter() { return null; }
EventDescriptor ICustomTypeDescriptor.GetDefaultEvent() { return null; }
PropertyDescriptor ICustomTypeDescriptor.GetDefaultProperty() { return null; }
object ICustomTypeDescriptor.GetEditor(Type editorBaseType) { return null; }
EventDescriptorCollection ICustomTypeDescriptor.GetEvents()
{
return new EventDescriptorCollection(null);
}
EventDescriptorCollection ICustomTypeDescriptor.GetEvents(Attribute[] attributes)
{
return new EventDescriptorCollection(null);
}
PropertyDescriptorCollection ICustomTypeDescriptor.GetProperties()
{
return propsCollection;
}
PropertyDescriptorCollection ICustomTypeDescriptor.GetProperties(Attribute[] attributes)
{
return propsCollection;
}
object ICustomTypeDescriptor.GetPropertyOwner(PropertyDescriptor pd)
{
return this;
}
}
public class MyPropDesc : PropertyDescriptor
{
PropertyDescriptor _PropDesc;
String _name;
public MyPropDesc(PropertyDescriptor propDesc, String name) : base(propDesc)
{
_PropDesc = propDesc;
_name = name;
}
public override string Category { get { return _PropDesc.Category; } }
public override string DisplayName {
get {
return _name;
}
}
public override Type ComponentType { get { return _PropDesc.ComponentType; } }
public override bool IsReadOnly { get { return false; } }
public override Type PropertyType
{
get
{
if (_PropDesc.Name == "person_s_name")
{
return typeof(string[]);
} else return _PropDesc.PropertyType;
}
}
public override bool CanResetValue(object component) { return false; }
public override bool ShouldSerializeValue(object component) { return true; }
public override void ResetValue(object component) {}
public override object GetValue(object component)
{
if (_PropDesc.Name == "person_s_name")
{
string[] sb = {"11111", "22222"};
return sb;
}
else return (((RowsProperty)component).Value as DataRowView).Row[_PropDesc.Name];
}
public override void SetValue(object component, object value)
{
(((RowsProperty)component).Value as DataRowView).Row[_PropDesc.Name]=value;
}
}
}
Или может быть стили отображения полей в PropertyGrid можно задать на этапе создания DataGridColumnStyle для DataGrid ? Интересно что его конструктор принимает PropertyDescriptor, к чему бы это ?
А>Заголовки полей переименовать получилось, сейчас не могу в PropertyGrid добавить выпадающие списки, которые позволяли бы выбирать для полей таблицы представляющих внешние ключи список из главных таблиц находящихся в том же DataSet
А>В методах GetValue и PropertyType была тестовая попытка создать выпадающий список, но почему то вместо этого я наблюдаю редактор для коллекции строк