How to Play with DataGrid Control - Handling Multiple Row Selection for Deletion by Checkbox Control
(Page 6 of 7 )
How to add CheckBox with DataGrid using TemplateColoumn
<asp:TemplateColumn>
<HeaderTemplate>
<input type="CheckBox" name="SelectAllCheckBox" onclick="SelectAll(this)">
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox id="SelectCheckBox" Runat="Server" />
</ItemTemplate>
</asp:TemplateColumn
>
<HeaderTemplate> will show a checkbox named as SelectAllCheckBox on DataGrid Header. And a JavaScript code will be execute OnClick event, i.e., SelectAll(this).
function SelectAll(CheckBoxControl)
{
if (CheckBoxControl.checked == true)
{
var i;
for (i=0; i < document.forms[0].elements.length; i++)
{
if ((document.forms[0].elements[i].type == 'checkbox') && (document.forms[0].elements[i].name.indexOf('dgNonApproveList') > -1))
{
document.forms[0].elements[i].checked = true;
}
}
}
else
{
var i;
for (i=0; i < document.forms[0].elements.length; i++)
{
if ((document.forms[0].elements[i].type == 'checkbox') && (document.forms[0].elements[i].name.indexOf('dgNonApproveList') > -1))
{
document.forms[0].elements[i].checked = false;
}
}
}
}
That function selects either all CheckBox Control or deselects all CheckBox Control.
Handling the btnApprove_Click Events (for delete particular row as well as multiple row deletion)
string GetSelectedUsers()
{
int i;
for (i=0; i < dgNonApproveList.Items.Count; i++)
{
if ( ( (CheckBox)dgNonApproveList.Items[i].FindControl("SelectCheckBox")).Checked == true)
{
if (SelUsersId != "")
{
SelUsersId += ",";
}
SelUsersId += dgNonApproveList.DataKeys[i];
}
}
return SelUsersId;
}
void btnApprove_Click(object sender, System.EventArgs e)
{
string SelUsersId = GetSelectedUsers();
if (SelUsersId!=String.Empty)
{
string strConn=System.Configuration.ConfigurationSettings.AppSettings["strConn"];
SqlConnection sqlConn = new SqlConnection(strConn);
sqlConn.Open();
SqlCommand objCommand = new SqlCommand();
objCommand.Connection=sqlConn;
SqlTransaction myTrans = sqlConn.BeginTransaction();
objCommand.Transaction=myTrans;
try
{
objCommand.CommandText="Delete From DocTemplate Where DocTId in ("+ SelUsersId +")";
objCommand.ExecuteNonQuery();
objCommand.CommandText="Delete From UserDocDefault Where DocTId in ("+ SelUsersId +")";
objCommand.ExecuteNonQuery();
myTrans.Commit();
}
catch (SqlException SqlEx)
{
MessageLabel.Text = SqlEx.Message;
myTrans.Rollback();
}
catch (Exception Ex)
{
MessageLabel.Text = Ex.Message;
}
finally
{
sqlConn.Close();
}
BindGrid();
}
else
MessageLabel.Text = "Pls Select at least one User Id.";
}
The above code you have seen will work for delete multiple rows from the DataGrid Control.
Next: Finishing Up >>
More ASP.NET Articles
More By Mayank Gupta