私はこのデータグリッドを持っているWindowsフォームを持っています。私は2列後にコンボボックスを追加するためにすべてのデータグリッド行をループしようとしています。DatagridViewRow.Cells.Addメソッドが動作していません
私の目標は、セル[0]の値に基づいて項目を表示するコンボボックスの列を持つことです。
ここに私のコードがあり、データグリッドの行にセルを追加できません。私は間違って何をしていますか?
private void UserAccessForm_Load(object sender, EventArgs e)
{
dataGridView1.DataSource = LoadData();
AddPermissions();
}
private DataTable LoadData()
{
ConnectionString = ConfigurationManager.ConnectionStrings["UserProfile"].ToString();
DataSet ds = new DataSet();
using (SqlDataAdapter sqlDataAdapter = new SqlDataAdapter())
{
// Create the command and set its properties
sqlDataAdapter.SelectCommand = new SqlCommand();
sqlDataAdapter.SelectCommand.Connection = new SqlConnection(ConnectionString);
sqlDataAdapter.SelectCommand.CommandType = CommandType.Text;
// Assign the SQL to the command object
sqlDataAdapter.SelectCommand.CommandText = string.Format(Script.sqlGetLocalSystem);
sqlDataAdapter.Fill(dt);
}
return dt;
}
public void AddPermissions()
{
DataTable dPermissions = new DataTable();
long systemId = 0;
DataGridViewComboBoxCell comboBoxCell = null;
foreach (DataGridViewRow row in dataGridView1.Rows)
{
ArrayList permissions = new ArrayList();
comboBoxCell = new DataGridViewComboBoxCell();
systemId = Convert.ToInt64(row.Cells[0].Value);
dPermissions = LoadPermissions(systemId);
foreach (DataRow dataRow in dPermissions.Rows)
{
permissions.Add(dataRow["UserLevelCategoryName"].ToString());
}
comboBoxCell.Items.AddRange(permissions.ToArray());
row.Cells.Add(comboBoxCell);
}
}
どのようにすればいいですか?
'DataGridViewComboBoxColumn'を' DataGridView'の 'Columns'コレクションに追加する必要があります。 –
ありがとう、うん、私はあなたのポイントを取得します。私はあなたのソリューションを試してみましたが、問題はイベントDataGridView1_EditingControlShowingは、データグリッド内の何かを変更する必要はないので、解雇されていません。データグリッドがロードされると自動的にロードされます。今回はクリア –
最初の問題は、グリッドのセルコレクションにセルを追加することです。 **間違っています!**あなたは私が答えで説明した方法でコンボボックスカラムを追加することができます。次に、コンボボックスに異なるアイテムを入れる方法について新しい質問をします。 –