グリッドを埋めているときにグリッドビューデータを削除しようとしていますが、
public void FillCompanyInfo()
{
DataTable dtCompanyInfo = new DataTable();
dtCompanyInfo = objFunctions.GetCompanyInfo();
if(dtCompanyInfo.Rows.Count>0)
{
dgvCompany.DataSource = dtCompanyInfo;
}
if (dtCompanyInfo.Rows.Count > 0)
{
if (this.dgvCompany.Columns.Count == 8)
{
DataGridViewCheckBoxColumn checkColumn = new DataGridViewCheckBoxColumn();
checkColumn.Name = "";
checkColumn.HeaderText = "Select";
checkColumn.Width = 50;
checkColumn.ReadOnly = false;
checkColumn.FillWeight = 10; //if the datagridview is resized (on form resize) the checkbox won't take up too much; value is relative to the other columns' fill values\\
dgvCompany.Columns.Add(checkColumn);
}
}
}
グリッドを埋めた後、グリッド行をクリックし、削除ボタンをクリックします。
private void btn_Delete_Click(object sender, EventArgs e)
{
foreach (DataGridViewRow r in dgvCompany.Rows)
{
if (Convert.ToBoolean(r.Cells[8].Value)) //cells[4] CONTAINS CHECKBOX COLUMN
{
string strId = r.Cells[1].Value.ToString(); //cells[0] CONTAINS EMPIDCOLUMN
objFunctions.DeleteCompany(strId);
}
}
FillCompanyInfo();
}
しかし、グリッドビューでデータを誤って削除すると、0から6までの数値フィールドと文字列フィールドが取得され、7位にchkボックスが表示されますが、データをグリッドにバインドした後、8位にもう1列追加することもできます。 ?
デバッグ中にふとこんなところで気付き、
foreach (DataGridViewRow r in dgvCompany.Rows)
そのグリッドビューには、このように列があり、ボックスをゼロの位置にチェックし、次に7つのフィールドにチェックし、次にボックスを8の位置にチェックして、順序をどのように変更しますか?
ご提案をお待ちしております よろしくお願いします