2 つの項目を持つプロパティ グリッドがあります。国と都市。データベースに 1 つのテーブルがあります: LocationId、Title、ParentId を保存する CountryCityTable。国の場合はparentId = 0、都市の場合はcountryidです。
私のプロパティ グリッドでは、これらを使用して 2 つのコンボボックス アイテムを表示します。私のコードを見てください:
namespace ProGrid
{
public class KeywordProperties
{
[TypeConverter(typeof(CountryLocationConvertor))]
public string CountryNames { get; set; }
[TypeConverter(typeof(CityLocationConvertor))]
public string CityNames { get; set; }
}
}
と
namespace ProGrid
{
public class CountryLocationConvertor : StringConverter
{
public override bool GetStandardValuesSupported(ITypeDescriptorContext context)
{
return true;
}
public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext context)
{
HumanRoles Db = new HumanRoles();
List<LocationsFieldSet> Items = new List<LocationsFieldSet>();
Items = Db.LoadLocations(0,0);
string[] LocationItems = new string[Items.Count];
int count = 0;
foreach (LocationsFieldSet Item in Items)
{
LocationItems[count] = Item.Title;
count++;
}
return new StandardValuesCollection(LocationItems);
}
public override bool GetStandardValuesExclusive(ITypeDescriptorContext context)
{
return true;//false : If you want the user to be able to type in a value that is not in the drop-down list.
}
}
public class CityLocationConvertor : StringConverter
{
public override bool GetStandardValuesSupported(ITypeDescriptorContext context)
{
return true;
}
public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext context)
{
HumanRoles Db = new HumanRoles();
List<LocationsFieldSet> Items = new List<LocationsFieldSet>();
Items = Db.LoadLocations(1,20);
string[] LocationItems = new string[Items.Count];
int count = 0;
foreach (LocationsFieldSet Item in Items)
{
LocationItems[count] = Item.Title;
count++;
}
return new StandardValuesCollection(LocationItems);
}
public override bool GetStandardValuesExclusive(ITypeDescriptorContext context)
{
return true;
}
}
}
と
KeywordProperties Kp = new KeywordProperties();
myPropertyGrid.SelectedObject = Kp;
ここで、ユーザーがプロパティグリッドで国のタイトルを変更したときに、都市のリストが更新されたときに必要です(これらの親 ID = 国 ID の都市を表示するだけです)。
また、私のクラスでは、コード ( Db.LoadLocations(1,20); ) の Number 20 を選択した国 ID に変更するにはどうすればよいですか?
ありがとう。