私は周りを走り回っているようで、最後の時間にそうしています。リストをdataGridViewにバインドする方法は?
文字列の配列からデータグリッドビューを取り込みたいとします。私はそれを直接読むことはできませんし、パブリックプロパティとして文字列を保持するカスタムタイプを作成する必要があることを私は知っています。
public class FileName
{
private string _value;
public FileName(string pValue)
{
_value = pValue;
}
public string Value
{
get
{
return _value;
}
set { _value = value; }
}
}
これはコンテナクラスであり、それは単純に文字列の値を持つプロパティを持つ:だから私は、クラスを作りました。今私が望むのは、そのデータソースをListにバインドするときに、datagridviewに表示される文字列だけです。
また、このメソッドBindGrid()を使って、datagridviewを埋めたいと思います。ここでは、次のとおりです。
private void BindGrid()
{
gvFilesOnServer.AutoGenerateColumns = false;
//create the column programatically
DataGridViewTextBoxColumn colFileName = new DataGridViewTextBoxColumn();
DataGridViewCell cell = new DataGridViewTextBoxCell();
colFileName.CellTemplate = cell; colFileName.Name = "Value";
colFileName.HeaderText = "File Name";
colFileName.ValueType = typeof(FileName);
//add the column to the datagridview
gvFilesOnServer.Columns.Add(colFileName);
//fill the string array
string[] filelist = GetFileListOnWebServer();
//try making a List<FileName> from that array
List<FileName> filenamesList = new List<FileName>(filelist.Length);
for (int i = 0; i < filelist.Length; i++)
{
filenamesList.Add(new FileName(filelist[i].ToString()));
}
//try making a bindingsource
BindingSource bs = new BindingSource();
bs.DataSource = typeof(FileName);
foreach (FileName fn in filenamesList)
{
bs.Add(fn);
}
gvFilesOnServer.DataSource = bs;
}
最後に、問題:文字列配列は、リストが作成され、[OK]、[OK]を塗りつぶし、私はDataGridViewの中に空の列を取得します。私もデータソース=リスト<を試してみました。= bindingsourceの代わりに、まだ何もありません。
私は本当に助言に感謝します、これは私を狂って運転しています。
は
注目すべきことは、プロパティのオブジェクトのパブリックフィールドだけがグリッド内でレンダリングされることです。言い換えれば、彼らは{get;セット; }が定義されているか、無視されます。 – Shane