Friday, 15 December 2006

Add, edit, delete datagridview.

After so many days. I was busy with Sister-In-Law's marriage. Yesterday I was not able to login. Something wierd was happening. Yesterday I was fignting with simple datagridview to add, edit and delete operations. I was able to to add and edit but delete? It took me 3-4 hours to make it work anf finally I did it. The following link helped me.

http://msdn2.microsoft.com/en-us/library/5s3ce6k8.aspx

It was simple thing to do but I was trying it with datatable. But actually you can do it with


public partial class Form1 : Form
{
private const string connectionString = "Database=MyDatabase;Server=localhost;User=sa;Password=sa;Enlist=false;";
private string sqlQuery;
private SqlConnection connection;
private SqlCommand command;
private SqlDataAdapter adapter;
private SqlCommandBuilder builder;
private DataSet ds;
private DataTable userTable;
private string[] fields = { "StatusId", "ADUserId", "Email", "FirstName",
"LastName" , "JobTitle", "DepartmentId", "Phone", "Fax",
"Mobile", "UniqueKey", "IsDeleted", "CreatedByUserId", "CreatedOn",
"ModifiedByUserId" };
public Form1()
{
InitializeComponent();
SetDataObjects();
btnUpdate.Enabled = false;
}
private void SetDataObjects()
{
sqlQuery = "SELECT UserID, StatusId, ADUserId, Email, FirstName, LastName, "
+ " JobTitle, DepartmentId, Phone, Fax, Mobile, UniqueKey,"
+ " IsDeleted, CreatedByUserId, CreatedOn, ModifiedByUserId"
+ " FROM [User]";
connection = new SqlConnection(connectionString);
command = new SqlCommand(sqlQuery, connection);
adapter = new SqlDataAdapter(command);
builder = new SqlCommandBuilder(adapter);
ds = new DataSet("MainDataSet");
}
private void btnLoad_Click(object sender, EventArgs e)
{
btnLoad.Enabled = false;
try
{
if (userTable != null)
{
userTable.Clear();
}
userDataGridView.DataSource = null;
userDataGridView.Rows.Clear();
userDataGridView.Refresh();
connection.Open();
adapter.Fill(ds, "User");
userTable = ds.Tables["User"];
foreach (string field in fields)
{
DataGridViewTextBoxColumn column = new DataGridViewTextBoxColumn();
column.AutoSizeMode = DataGridViewAutoSizeColumnMode.ColumnHeader;
column.ValueType = userTable.Rows[0][field].GetType();
column.DataPropertyName = field;
column.HeaderText = field.ToUpper();
column.Name = field;
column.ReadOnly = false;
column.SortMode = DataGridViewColumnSortMode.Automatic;
column.Visible = true;
switch (field.ToLower())
{
case "aduserid":
case "email":
case "firstname":
case "lastname":
case "jobtitle":
case "departmentid":
case "phone":
case "fax":
case "mobile":
break;
case "statusid":
userTable.Columns[field].DefaultValue = 1;
column.Visible = false;
break;
case "userid":
column.Visible = false;
break;
case "uniquekey":
userTable.Columns[field].DefaultValue = 1;
column.Visible = false;
break;
case "isdeleted":
userTable.Columns[field].DefaultValue = 0;
column.Visible = false;
break;
case "createdbyuserid":
userTable.Columns[field].DefaultValue = 1;
column.Visible = false;
break;
case "createdon":
userTable.Columns[field].DefaultValue = DateTime.Now;
column.Visible = false;
break;
case "modifiedbyuserid":
userTable.Columns[field].DefaultValue = 1;
column.Visible = false;
break;
}
userDataGridView.Columns.Add(column);
}
userDataGridView.DataSource = userTable.DefaultView;
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
btnLoad.Enabled = true;
}
finally
{
connection.Close();
}
}
private void btnAdd_Click(object sender, EventArgs e)
{
try
{
userDataGridView.ReadOnly = false;
btnAdd.Enabled = false;
btnUpdate.Enabled = true;
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
private void btnUpdate_Click(object sender, EventArgs e)
{
try
{
connection.Open();
adapter.Update(userTable);
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
finally
{
btnAdd.Enabled = true;
btnLoad.Enabled = true;
btnUpdate.Enabled = true;
connection.Close();
}
}

// Was simeple but I took little bit more time.
private void btnDelete_Click(object sender, EventArgs e)
{
if (MessageBox.Show("Do you really want to delete selected record(s)?",
"Delete Warning", MessageBoxButtons.YesNo,
MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2, 0, false)
== DialogResult.Yes)
{
try
{
connection.Open();
int cnt = userDataGridView.SelectedRows.Count;
for (int i = 0; i <> 0 &&
this.userDataGridView.SelectedRows[0].Index !=
this.userDataGridView.Rows.Count - 1)
{
this.userDataGridView.Rows.RemoveAt(
this.userDataGridView.SelectedRows[0].Index);
}
}
adapter.Update(userTable);
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
finally
{
connection.Close();
btnLoad.Enabled = true;
}
}
}


}

No comments: