May 18, 2015 07:11 by
Peter
In this short article, let me show you how to create two buttons "one for UP" and "one for DOWN" in the datagrid then you can easily move row up and down by using the following code.
Add code in Default.aspx page:
<asp:DataGrid ID="dgrdAdmin" runat="server" OnItemCommand="dgrdAdmin_ItemCommand" AllowSorting="true">
<Columns>
<asp:BoundColumn DataField="id" Visible="false"></asp:BoundColumn>
<asp:TemplateColumn>
<ItemTemplate>
<asp:ImageButton ID="imgbtnUP" runat="server" CommandName="Up" />
<asp:ImageButton ID="imgbtnDown" runat="server" CommandName="Down" />
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>
Now, write the following code:
private int GetMaxSortOrder()
{
int max = 0;
DataTable dt = new DataTable();
SqlConnection conn = new SqlConnection("Your_Connection_String");
SqlCommand cmd = new SqlCommand("SELECT MAX(SORTORDER) FROM Your_Admin_Table");
conn.Open();
SqlDataAdapter sqad = new SqlDataAdapter(cmd);
sqad.Fill(dt);
if (dt.Rows.Count > 0)
{
if (dt.Rows[0][0].ToString() != "")
max = Convert.ToInt32(dt.Rows[0][0]);
}
return max;
}
protected void dgrdAdmin_ItemCommand(object sender, DataGridCommandEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
if (e.CommandName.Equals("Up"))
{
int SortOrder = 0;
SqlConnection conn = new SqlConnection("Your_Connection_String");
if (e.Item.Cells[10].Text != "")
{
SortOrder = Convert.ToInt32(e.Item.Cells[10].Text);
if (SortOrder == 0)
{
DataTable dt = new DataTable();
SqlCommand cmd = new SqlCommand("SELECT id FROM Your_ADMIN_Table");
conn.Open();
SqlDataAdapter sqad = new SqlDataAdapter(cmd);
sqad.Fill(dt);
if (dt.Rows.Count > 0)
{
int count = 0;
foreach (DataRow dr in dt.Rows)
{
count++;
SqlCommand cmdUp = new SqlCommand("UPDATE Your_ADMIN_Table SET
SortOrder='" + count + "' WHERE id='" + dr["id"].ToString() + "'");
cmdUp.ExecuteNonQuery();
}
}
// bind your grid
return;
}
}
if (SortOrder == GetMaxSortOrder() || SortOrder > GetMaxSortOrder())
return;
SqlCommand cmd2 = new SqlCommand("UPDATE Your_ADMIN_Table SET
SortOrder='" + SortOrder + "' WHERE SortOrder='" + (SortOrder + 1) + "'");
cmd2.ExecuteNonQuery();
SqlCommand cmd3 = new SqlCommand("UPDATE Your_ADMIN_Table SET
SortOrder='" + (SortOrder + 1) + "' WHERE id='" + e.Item.Cells[1].Text + "' AND
SortOrder='" + SortOrder + "'");
cmd3.ExecuteNonQuery();
dgrdAdmin.DataSource = // Bind data in datagrid
dgrdAdmin.DataBind();
}
if (e.CommandName.Equals("Down"))
{
SqlConnection conn = new SqlConnection("Your_Connection_String");
int SortOrder = 0;
if (e.Item.Cells[10].Text != "")
{
SortOrder = Convert.ToInt32(e.Item.Cells[10].Text);
if (SortOrder == 0)
{
DataTable dt = new DataTable();
SqlCommand cmd = new SqlCommand("SELECT id FROM Your_ADMIN_Table");
conn.Open();
SqlDataAdapter sqad = new SqlDataAdapter(cmd);
if (dt.Rows.Count > 0)
{
int count = 0;
foreach (DataRow dr in dt.Rows)
{
count++;
SqlCommand cmdDown = new SqlCommand("UPDATE Your_ADMIN_Table SET
SortOrder='" + count + "' WHERE id='" + dr["id"].ToString() + "'");
cmdDown.ExecuteNonQuery();
}
}
// bind your grid
return;
}
}
if (SortOrder == 0)
return;
SqlCommand cmd1 = new SqlCommand("UPDATE Your_ADMIN_Table SET SortOrder=" + SortOrder + "' WHERE SortOrder='" + (SortOrder - 1) + "'");
cmd1.ExecuteNonQuery();
SqlCommand cmd2 = new SqlCommand("UPDATE Your_ADMIN_Table SET SortOrder='" + (SortOrder - 1) + "' WHERE id='" + e.Item.Cells[1].Text + "'
AND SortOrder='" + SortOrder + "'");
cmd2.ExecuteNonQuery();
dgrdAdmin.DataSource = // Bind data in datagrid
dgrdAdmin.DataBind();
}
}
}
Now you can easily move your datagrid row up and down with sorting.
Free ASP.NET 5 Hosting
Try our Free ASP.NET 5 Hosting today and your account will be setup soon! You can also take advantage of our Windows & ASP.NET Hosting support with Unlimited Domain, Unlimited Bandwidth, Unlimited Disk Space, etc.