Introduction: In
this article I will explain how we can use the checkbox control inside the
Gridview in Asp.net.
Now run the project and check the result.
Description:
In the last article i have explained How to Bind XML file to Gridview in Asp.net, How to download a file from Gridview using Link button in Asp.net and How to edit and update Dropdownlist in Gridview data control in Asp.net
In the last article i have explained How to Bind XML file to Gridview in Asp.net, How to download a file from Gridview using Link button in Asp.net and How to edit and update Dropdownlist in Gridview data control in Asp.net
I have a Gridview binded to database and show detail of Register
user who are not authorized by admin yet. Here I give the option to
select/Unselect all unauthorized user from header checkbox or single-2 checkbox
selection.
I have a Create a Table USER_REGISTRATION:
Id
|
int
|
Username
|
varchar(50)
|
Name
|
varchar(50)
|
Email
|
varchar(50)
|
Gender
|
varchar(50)
|
Is_autho
|
bit
|
Id is primary key and autoincrement.
Add a new webform to project. Drag and drop the controls
from Toolbox and desgined .aspx page as mention below:
<table align="center"><tr><td>
<asp:GridView ID="GridView1"
runat="server"
AutoGenerateColumns="False"
DataKeyNames="Id,Username"
onrowdatabound="GridView1_RowDataBound">
<Columns>
<asp:TemplateField HeaderText="CheckAll">
<HeaderTemplate>
<asp:CheckBox ID="chkSelectAll" runat="server" onclick="javascript:SelectheaderCheckboxes(this)"/>
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox ID="chkselect" runat="server"
AutoPostBack="true"
/>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Username">
<ItemTemplate>
<asp:Label ID="lblusername" runat="server" Text='<%# Eval("Username") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Name">
<ItemTemplate>
<asp:Label ID="lblname" runat="server" Text='<%# Eval("Name") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Email">
<ItemTemplate>
<asp:Label ID="lblemail" runat="server" Text='<%# Eval("Email") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Gender">
<ItemTemplate>
<asp:Label ID="lblsex" runat="server" Text='<%# Eval("Gender") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView></td></tr>
<tr><td> <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Authorize User" /></td></tr>
</table>
Put the below given Javascript in between Head tag of .aspx
page:
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<script type="text/javascript">
function SelectheaderCheckboxes(headerchk) {
debugger
var gvdetail = document.getElementById('GridView1');
var i;
if (headerchk.checked) {
for (i = 0; i < gvdetail.rows.length; i++) {
var inputs =
gvdetail.rows[i].getElementsByTagName('input');
inputs[0].checked = true;
}
}
else {
for (i = 0; i < gvdetail.rows.length; i++) {
var inputs =
gvdetail.rows[i].getElementsByTagName('input');
inputs[0].checked = false;
}
}
}
function Selectchildcheckboxes(header) {
var ck = header;
var count = 0;
var gvdetail = document.getElementById('GridView1');
var headerchk = document.getElementById(header);
var rowcount = gvdetail.rows.length;
for (i = 1; i < gvdetail.rows.length; i++) {
var inputs = gvdetail.rows[i].getElementsByTagName('input');
if (inputs[0].checked) {
count++;
}
}
if (count == rowcount - 1) {
headerchk.checked = true;
}
else {
headerchk.checked = false;
}
}
</script>
Note: Don’t
forget to add ConnectionString in web.config file:
<connectionStrings>
<add name="Connection" connectionString="Data
Source=VIJAY-PC;Initial Catalog=TEST_APPLICATION;Integrated Security=True"/>
</connectionStrings>
Now on .aspx.cs page write the below given code to bind
gridview:
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
SqlConnection con = new
SqlConnection(ConfigurationManager.ConnectionStrings["connection"].ConnectionString.ToString());
protected void
Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Bindgrid();
}
}
private void
Bindgrid()
{
con.Open();
SqlCommand cmd = new
SqlCommand("select
* from USER_REGISTRATION where Is_autho = 0", con);
SqlDataAdapter adp = new
SqlDataAdapter(cmd);
DataSet ds = new DataSet();
adp.Fill(ds);
if (ds.Tables[0].Rows.Count > 0)
{
GridView1.DataSource = ds;
GridView1.DataBind();
}
else
{
ds.Tables[0].Rows.Add(ds.Tables[0].NewRow());
GridView1.DataSource = ds;
GridView1.DataBind();
int columncount = GridView1.Rows[0].Cells.Count;
GridView1.Rows[0].Cells.Clear();
GridView1.Rows[0].Cells.Add(new TableCell());
GridView1.Rows[0].Cells[0].ColumnSpan = columncount;
GridView1.Rows[0].Cells[0].Text = " NO
record Found";
}
con.Close();
}
In VB (.aspx.vb)
Imports System.Data
Imports System.Data.SqlClient
Imports System.Configuration
Protected Sub
Page_Load(sender As Object,
e As System.EventArgs)
Handles Me.Load
If Not IsPostBack Then
Bindgrid()
End If
End Sub
Private Sub
Bindgrid()
con.Open()
Dim cmd As New SqlCommand("select * from USER_REGISTRATION where Is_autho =
0", con)
Dim adp As New SqlDataAdapter(cmd)
Dim ds As New DataSet()
adp.Fill(ds)
If ds.Tables(0).Rows.Count > 0 Then
GridView1.DataSource = ds
GridView1.DataBind()
Else
ds.Tables(0).Rows.Add(ds.Tables(0).NewRow())
GridView1.DataSource = ds
GridView1.DataBind()
Dim columncount As Integer = GridView1.Rows(0).Cells.Count
GridView1.Rows(0).Cells.Clear()
GridView1.Rows(0).Cells.Add(New TableCell())
GridView1.Rows(0).Cells(0).ColumnSpan = columncount
GridView1.Rows(0).Cells(0).Text = " NO
record Found"
End If
con.Close()
End Sub
On Gridview RowDataBound write the below given code (.aspx.cs):
protected void
GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
CheckBox chkselectall = (CheckBox)GridView1.HeaderRow.FindControl("chkSelectAll");
CheckBox chk = (CheckBox)e.Row.FindControl("chkselect");
chk.Attributes.Add("onclick",
"javascript:Selectchildcheckboxes('"
+ chkselectall.ClientID + "')");
}
}
In VB (.aspx.vb)
Protected Sub
GridView1_RowDataBound(sender As Object, e As
System.Web.UI.WebControls.GridViewRowEventArgs)
Handles GridView1.RowDataBound
If e.Row.RowType = DataControlRowType.DataRow
Then
Dim chkselectall As CheckBox = DirectCast(GridView1.HeaderRow.FindControl("chkSelectAll"), CheckBox)
Dim chk As CheckBox = DirectCast(e.Row.FindControl("chkselect"), CheckBox)
chk.Attributes.Add("onclick",
"javascript:Selectchildcheckboxes('"
+ chkselectall.ClientID & "')")
End If
End Sub
After that on button click right the code (.aspx.cs):
protected void
Button1_Click(object sender, EventArgs e)
{
try
{
foreach (GridViewRow
row in GridView1.Rows)
{
CheckBox chk = (CheckBox)row.FindControl("chkSelect");
if (chk.Checked)
{
int Id = Convert.ToInt32(GridView1.DataKeys[row.RowIndex].Value);
string username =
GridView1.DataKeys[row.RowIndex].Values["Username"].ToString();
Messagebox("User " +
username + " Authorized");
con.Open();
{
string sql = "update USER_REGISTRATION
set Is_autho = 1 where Id = " + @Id;
using (SqlCommand cmd = new SqlCommand(sql,
con))
{
cmd.Parameters.AddWithValue("@Id", Id);
cmd.ExecuteNonQuery();
con.Close();
}
}
}
}
this.Bindgrid();
}
catch (Exception
ex)
{
}
}
//show message
private void
Messagebox(string Message)
{
Label lblMessageBox = new
Label();
lblMessageBox.Text =
"<script language='javascript'>" +
Environment.NewLine +
"window.alert('" + Message + "')</script>";
Page.Controls.Add(lblMessageBox);
}
In VB (.aspx.vb)
Protected Sub
Button1_Click(sender As Object, e As EventArgs) Handles
Button1.Click
Try
For Each row As GridViewRow In GridView1.Rows
Dim chk As
CheckBox = DirectCast(row.FindControl("chkSelect"), CheckBox)
If chk.Checked Then
Dim Id As
Integer = Convert.ToInt32(GridView1.DataKeys(row.RowIndex).Value)
Dim
username As String
= GridView1.DataKeys(row.RowIndex).Values("Username").ToString()
Messagebox("User " &
username & " Authorized")
con.Open()
If True Then
Dim sql As String = "update USER_REGISTRATION set Is_autho = 1 where Id
= " & Id
Using cmd As New SqlCommand(sql,
con)
cmd.Parameters.AddWithValue("@Id",
Id)
cmd.ExecuteNonQuery()
con.Close()
End Using
End If
End If
Next
Me.Bindgrid()
Catch ex As Exception
End Try
End Sub
Private Sub
Messagebox(Message As String)
Dim lblMessageBox As New Label()
lblMessageBox.Text = "<script
language='javascript'>" + Environment.NewLine
& "window.alert('" &
Message & "')</script>"
Page.Controls.Add(lblMessageBox)
End Sub
thalk you
ReplyDeleteYou are welcome..........keep visiting
Deletehello, Can you please help me for one of the project.
ReplyDelete