Hi
I am using datagridview to add,delete data dynamically.I am adding row by row.
I am using the link http://www.dreamincode.net/forums/topic/238727-insert-update-and-delete-records-in-table-with-datagridview-using-c%23/ to add ,delete data dynamically
I want to use combo box for FirstName to display inside datagridview .
If FirstName is selected ,I want to display all other details for that row.
I have given the code which i tried
public partial class Form1 : Form
{
int MaxIRSNo;
SqlConnection sqlCon = new SqlConnection("Data Source=prs\\MSSQLSERVER2;Initial Catalog=prs4;User ID=prs1;Password=prs1");
SqlCommandBuilder sqlCommand = null;
SqlDataAdapter sqlAdapter = null;
DataSet dataset = null;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
try
{
sqlCon.Open();
LoadData();
}
catch (Exception ex) { MessageBox.Show(ex.Message); }
}
private void LoadData()
{
try
{
sqlAdapter = new SqlDataAdapter("SELECT [EmployeeID],[LastName],[FirstName] ,[Title],[HireDate],PostalCode, 'Delete' AS [Delete] FROM Employees", sqlCon);
sqlCommand = new SqlCommandBuilder(sqlAdapter);
sqlAdapter.InsertCommand = sqlCommand.GetInsertCommand();
sqlAdapter.UpdateCommand = sqlCommand.GetUpdateCommand();
sqlAdapter.DeleteCommand = sqlCommand.GetDeleteCommand();
DataGridViewComboBoxColumn FirstName = new DataGridViewComboBoxColumn();
FirstName.Items.Add("xxx");
FirstName.Items.Add("yyy");
dgvEmployee.Columns.Add(FirstName);
dataset = new DataSet();
sqlAdapter.Fill(dataset, "Employees");
dgvEmployee.DataSource = null;
dgvEmployee.DataSource = dataset.Tables["Employees"];
dgvEmployee.AutoGenerateColumns = false;
for (int i = 1; i < dgvEmployee.Rows.Count; i++)
{ DataGridViewLinkCell linkCell = new DataGridViewLinkCell();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void dgvEmployee_UserAddedRow(object sender, DataGridViewRowEventArgs e)
{
try
{
int lastRow = dgvEmployee.Rows.Count - 2;
DataGridViewRow nRow = dgvEmployee.Rows[lastRow];
DataGridViewLinkCell linkCell = new DataGridViewLinkCell();
dgvEmployee[6, lastRow] = linkCell;
nRow.Cells["Delete"].Value = "Insert";
}
catch (Exception ex) { MessageBox.Show(ex.Message); }
}
private void dgvEmployee_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
try
{
if (e.ColumnIndex == 6)
{
string Task = dgvEmployee.Rows[e.RowIndex].Cells[6].Value.ToString();
if (Task == "Delete")
{
if (MessageBox.Show("Are you sure to delete?", "Deleting...", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
int rowIndex = e.RowIndex;
dgvEmployee.Rows.RemoveAt(rowIndex);
dataset.Tables["Employees"].Rows[rowIndex].Delete();
sqlAdapter.Update(dataset, "Employees");
}
}
else if (Task == "Insert")
{
int row = dgvEmployee.Rows.Count - 2;
DataRow dr = dataset.Tables["Employees"].NewRow();
dr["LastName"] = dgvEmployee.Rows[row].Cells["LastName"].Value;
dr["FirstName"] = dgvEmployee.Rows[row].Cells["FirstName"].Value;
dr["Title"] = dgvEmployee.Rows[row].Cells["Title"].Value;
dr["HireDate"] = dgvEmployee.Rows[row].Cells["HireDate"].Value;
dr["PostalCode"] = dgvEmployee.Rows[row].Cells["PostalCode"].Value;
dataset.Tables["Employees"].Rows.Add(dr);
dataset.Tables["Employees"].Rows.RemoveAt(dataset.Tables["Employees"].Rows.Count - 1);
dgvEmployee.Rows.RemoveAt(dgvEmployee.Rows.Count - 2);
dgvEmployee.Rows[e.RowIndex].Cells[6].Value = "Delete";
sqlAdapter.Update(dataset, "Employees");
}
else if (Task == "Update")
{
int r = e.RowIndex;
dataset.Tables["Employees"].Rows[r]["LastName"] = dgvEmployee.Rows[r].Cells["LastName"].Value;
dataset.Tables["Employees"].Rows[r]["FirstName"] = dgvEmployee.Rows[r].Cells["FirstName"].Value;
dataset.Tables["Employees"].Rows[r]["Title"] = dgvEmployee.Rows[r].Cells["Title"].Value;
dataset.Tables["Employees"].Rows[r]["HireDate"] = dgvEmployee.Rows[r].Cells["HireDate"].Value;
dataset.Tables["Employees"].Rows[r]["PostalCode"] = dgvEmployee.Rows[r].Cells["PostalCode"].Value;
sqlAdapter.Update(dataset, "Employees");
dgvEmployee.Rows[e.RowIndex].Cells[6].Value = "Delete";
}
}
}
catch (Exception ex) { }
}
void cb_SelectedIndexChanged(object sender, EventArgs e)
{
//getting last name,postalcode,Title,HireDate based on combobox selected value "FirstName"
//I have to check with selected value in combobox.
}
private void dgvEmployee_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
ComboBox cb = e.Control as ComboBox;
if (cb != null)
{
// first remove event handler to keep from attaching multiple:
cb.SelectedIndexChanged -= new
EventHandler(cb_SelectedIndexChanged);
}
}
} In the URL exampe,unbound design controls are not used.
Pleae help me
Regards
Chandran.