두 개의 comboBoxes
이 있습니다. 먼저 브랜드를 선택하고 두 번째 모델을 선택합니다. 모델 선택에 따라 picture
도 표시하고 싶습니다. 내가 FileInfo
컬럼을 추가 할 때까지 모든 것이 작동하는 것처럼 보였다. 이제 코드가 작동하지 않습니다 (브랜드 및 모델을 선택할 수도 없습니다 - comboboxes are empty
). 어떤 것은 잘못된 것입니다 :DataTable의 FileInfo가 작동하지 않습니다.
dtCategories = new DataTable();
dtCategories.Columns.Add("CategoryID", typeof(int));
dtCategories.Columns.Add("CategoryName", typeof(string));
dtCategories.Rows.Add(0, "--Select--");
dtCategories.Rows.Add(1, "Audi");
dtCategories.Rows.Add(2, "BMW");
dtCategories.Rows.Add(3, "Mercedes");
dtItems = new DataTable();
dtItems.Columns.Add("ItemID", typeof(int));
dtItems.Columns.Add("ItemName", typeof(string));
dtItems.Columns.Add("CategoryID", typeof(int));
dtItems.Columns.Add("Obrazek", typeof(FileInfo));
dtItems.Rows.Add(2, "A1", 1, "a1.jpeg");
dtItems.Rows.Add(3, "A3", 1, "a3.jpeg");
dtItems.Rows.Add(4, "A4", 1, "a5.jpeg");
dtItems.Rows.Add(5, "Seria 1", 2, "bmw1.jpeg");
dtItems.Rows.Add(6, "Seria 2", 2, "bmw3.jpeg");
dtItems.Rows.Add(7, "Seria 3", 2, "bmw5.jpeg");
dtItems.Rows.Add(8, "C Klasa", 3, "C Klasa.jpeg");
dtItems.Rows.Add(9, "E Klasa", 3, "E Klasa.jpeg");
dtItems.Rows.Add(10, "S Klasa", 3, "S Klasa.jpeg");
cbCategory.DisplayMember = "CategoryName";
cbCategory.ValueMember = "CategoryID";
cbCategory.DataSource = dtCategories;
그리고 :
private void cbCategory_SelectedIndexChanged(object sender, EventArgs e)
{
int categoryId = Convert.ToInt32(cbCategory.SelectedValue);
if (categoryId > 0)
{
DataTable dtTemp = dtItems.Select(string.Format("CategoryID = {0}", categoryId)).CopyToDataTable();
DataRow drTemp = dtTemp.NewRow();
drTemp["ItemID"] = 0;
drTemp["ItemName"] = "--Select--";
drTemp["CategoryID"] = 0;
dtTemp.Rows.InsertAt(drTemp, 0);
cbItems.DisplayMember = "ItemName";
cbItems.ValueMember = "ItemID";
cbItems.DataSource = dtTemp;
pictureBox1.Image = Image.FromFile(dtTemp.Columns[3].ToString());
}
else if (cbItems.DataSource != null)
{
cbItems.SelectedIndex = 0;
}
}
저는 "a1.jpeg"는 유효한 FileInfo 객체가 아닙니다. _Obrazek_ 열을 ** string ** –