我試圖用兩個自定義列和一些從數據表填充的行填充無界的datagridview。 第一個datagridview的列必須從第一個數據表列填充,等等。 第一欄是品牌的名稱,第二是品牌的圖片。如何從DataGridViewRow填充DataGridView
我用這個代碼和一些LINQ準備兩個數組
DataTable dt = new DataTable();
dt = clsTransmit.FillDataTable("SELECT brandName, brandPic FROM brands", false);
int count = dt.Rows.Count;
string[] names = dt.AsEnumerable().Select(row => row.Field<string>("brandName")).ToArray();
string[] pics = dt.AsEnumerable().Select(row => row.Field<string>("brandPic")).ToArray();
現在我想,以填補我的datagridview的,我已經嘗試這些代碼:
DataGridViewColumn brandName = new DataGridViewColumn();
DataGridViewImageColumn imageCol = new DataGridViewImageColumn();
dgv.Columns.Add(brandName);
dgv.Columns.Add(imageCol);
dgv.Columns[0].HeaderText = "Brand Name";
dgv.Columns[1].HeaderText = "Brand Picture";
DataGridViewRow n = new DataGridViewRow();
DataGridViewRow p = new DataGridViewRow();
for (int i = 0; i < count-1; i++)
{
n.Cells[i].Value = names[i];
p.Cells[i].Value = imgList.Images[i];
}
dgv.Rows.AddRange(n);
dgv.Rows.AddRange(p);
,我也試試這個:
dgv.Rows.Add(names);
dgv.Rows.Add(pics);
運行後顯示錯誤消息:
索引超出範圍。
確定更新我的代碼,並得到回答 我使用的圖像列表並填寫本:
foreach (var item in pics)
{
Image img = Image.FromFile(item);
imgList.Images.Add(img);
}
,並使用這些代碼來填充GridView和得到正確的答案:
dgv.Columns.Add("brandName", "Brand Name");
for (int i = 0; i < count; i++)
{
dgv.Rows.Add(new object[] {names[i]});
}
DataGridViewImageColumn imageCol = new DataGridViewImageColumn();
dgv.Columns.Add(imageCol);
dgv.Columns[1].HeaderText = "Brand Logo";
dgv.Rows.Add();
for (int i = 0; i < count; i++)
{
dgv.Rows[i].Cells[1].Value = imgList.Images[i];
}
但我現在有另一個問題 問題是datagridview在所有r的底部有多餘的空行ows。我已經取消勾選啓用添加,編輯,刪除的datagridview但它仍然有一個額外的行:(
我的代碼是不是這樣複雜。正如我所說的,你不應該手動添加列到你的'DataGridView',而是使用'DataSource'。我發佈的代碼只有一點'IO',一點''LINQ',以及'DataGridView'的一點用法,你應該嘗試一下並逐漸理解它。 –
那麼你的更新代碼有什麼問題? –
刪除行'dgv.Rows.Add();' –