Snippets datagridview
Handle grid (dgvhandle.snippet)
<?xml version="1.0" encoding="utf-8" ?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
<CodeSnippet Format="1.0.0">
<Header>
<Title>Handle datagridview</Title>
<Shortcut>dgvHandle</Shortcut>
<Description>Code snippet for handling a datagridview with insert/update/delete</Description>
<Author>Peter De Keyser</Author>
<SnippetTypes>
<SnippetType>Expansion</SnippetType>
</SnippetTypes>
</Header>
<Snippet>
<Declarations>
<Literal>
<ID>object</ID>
<ToolTip>Name object</ToolTip>
<Default>Object</Default>
</Literal>
</Declarations>
<Code Language="csharp">
<![CDATA[
$object$ selected$object$ = new $object$();
//todo: set dgv SelectionMode = FullRowSelect
//todo: set dgv RowHeadersVisible = false
//todo: set dgv RowTemplate.Height = 18-20 (Standard is 22)
//todo: load bindingsource: bs$object$Grid.DataSource = new SortableList<$object$>($object$.GetAll());
#region $object$ Controls
private void dgv$object$_SelectionChanged(object sender, EventArgs e)
{
// value from multiple select:
//foreach (DataGridViewRow mRow in dgv$object$.SelectedRows)
//{
// $object$ m$object$ = ($object$)mRow.DataBoundItem;
//}
// value from normal select:
//$object$ m$object$ = ($object$)dgv$object$.CurrentRow.DataBoundItem;
// set details / subgrid
if (bs$object$Grid.Current != null)
{
$object$.CopyMembers(($object$)bs$object$Grid.Current, selected$object$);
bs$object$Detail.DataSource = bs$object$Grid.Current;
}
else
{
selected$object$ = new $object$();
bs$object$Detail.DataSource = new $object$();
}
}
private void btn$object$New_Click(object sender, EventArgs e)
{
if (btn$object$New.Text == "New")
{
$object$New();
btn$object$New.Text = "Insert";
}
else if (btn$object$New.Text == "Insert")
{
if ($object$Insert())
Reset$object$Controls();
else
epError.SetError(btn$object$New, "Error inserting $object$");
}
}
private void btn$object$Edit_Click(object sender, EventArgs e)
{
if (btn$object$Edit.Text == "Edit")
{
$object$Edit();
btn$object$Edit.Text = "Update";
}
else if (btn$object$Edit.Text == "Update")
{
if ($object$Update())
Reset$object$Controls();
else
epError.SetError(btn$object$Edit, "Error updating $object$");
}
}
private void btn$object$Delete_Click(object sender, EventArgs e)
{
if (btn$object$Delete.Text == "Delete")
{
$object$Delete();
btn$object$Delete.Text = "Confirm";
}
else if (btn$object$Delete.Text == "Confirm")
{
if ($object$DeleteConfirm())
Reset$object$Controls();
else
epError.SetError(btn$object$Delete, "Error deleting $object$");
}
}
private void btn$object$Cancel_Click(object sender, EventArgs e)
{
Reset$object$Controls();
// Copy the members of the selected item back to the grids and reset them.
$object$.CopyMembers(selected$object$, ($object$)bs$object$Grid.Current);
bs$object$Grid.ResetCurrentItem();
bs$object$Detail.DataSource = bs$object$Grid.Current;
bs$object$Detail.ResetCurrentItem();
}
private void $object$ControlsReadOnly(bool readOnly)
{
//todo: add all the controls here
btn$object$Cancel.Enabled = !readOnly;
//txtName.ReadOnly = readOnly;
}
/// <summary>
/// Reset the controls after insert/update/delete/cancel.
/// Grids are not reset, because this depends on the action before.
/// </summary>
private void Reset$object$Controls()
{
btn$object$New.Text = "New";
btn$object$New.Enabled = true;
btn$object$Edit.Text = "Edit";
btn$object$Edit.Enabled = true;
btn$object$Delete.Text = "Delete";
btn$object$Delete.Enabled = true;
epError.Clear();
$object$ControlsReadOnly(true);
dgv$object$.Enabled = true;
}
#endregion
#region $object$ I/U
private void $object$New()
{
$object$ControlsReadOnly(false);
dgv$object$.Enabled = false;
btn$object$Edit.Enabled = false;
btn$object$Delete.Enabled = false;
bs$object$Detail.DataSource = new Rbm();
}
private bool $object$Insert()
{
$object$ inserted = ($object$)bs$object$Detail.Current;
if ($object$.Insert(ref inserted))
{
bs$object$Grid.Add(inserted);
bs$object$Grid.MoveLast();
return true;
}
else
return false;
}
private void $object$Edit()
{
$object$ControlsReadOnly(false);
dgv$object$.Enabled = false;
btn$object$New.Enabled = false;
btn$object$Delete.Enabled = false;
}
private bool $object$Update()
{
$object$ updated = ($object$)bs$object$Detail.Current;
if ($object$.Update(ref updated))
{
$object$.CopyMembers(updated, ($object$)bs$object$Grid.Current);
return true;
}
else
return false;
}
private void $object$Delete()
{
dgv$object$.Enabled = false;
btn$object$New.Enabled = false;
btn$object$Edit.Enabled = false;
btn$object$Cancel.Enabled = true;
}
private bool $object$DeleteConfirm()
{
if ($object$.Delete(($object$)bs$object$Grid.Current))
{
bs$object$Grid.RemoveCurrent();
bs$object$Grid.MoveFirst();
return true;
}
else
return false;
}
#endregion
$end$]]>
</Code>
</Snippet>
</CodeSnippet>
</CodeSnippets>
[[/code]]
page revision: 6, last edited: 29 Dec 2010 06:45