Objective

In this article, I am going to show how to add a checkboxes in SPGRidVIew. I will iterate through the SPGridView to find out the selected rows.

Step 1

 

  1. Create a SharePoint project by selecting Web Part template.
  2. Choose trust level to Fully. Or in other words deploy into the GAC.

Step 2

Add a class to the Web Part project. Give this class any name. I am giving name here CheckBoxTemplate

  1. Add the namespace System.Web.UI
  2. Implement the interface ITemplate
  3. This class has been ListItemType properties; this will contain the item type.
  4. This contains a string property which holds the column name.

CheckBoxTemplate.cs

using System;

using System.Collections.Generic;

using System.Text;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.ComponentModel;

using System.Web.UI.HtmlControls;

 

namespace AWebPart

{


class
CheckBoxTemplate:ITemplate

{


private
ListItemType _itemType;


private
string _columnName;

 


public CheckBoxTemplate(ListItemType itemType, string columnName)

{

_itemType = itemType;

_columnName = columnName;

}

 


public
void InstantiateIn(Control container)

{


switch (_itemType)

{


case
ListItemType.Header :


LiteralControl header = new
LiteralControl();

header.Text = string.Format(“<b>{0}</b>”, _columnName);

container.Controls.Add(header);


break;


case
ListItemType.Item :


CheckBox checkboxitem = new
CheckBox();

checkboxitem.ID = “selectedTask”;

checkboxitem.Visible = true;

container.Controls.Add(checkboxitem);


HtmlInputHidden taskIdItem = new
HtmlInputHidden();

taskIdItem.ID = “taskIdItem”;

container.Controls.Add(taskIdItem);


break;


default :


break;

}

}

}

}

 

Step 3

Create a class Author.cs. This class is simple entity class which is holding Author as entity.

Authors.cs

 

using System;

using System.Collections.Generic;

 

using System.Text;

    

namespace AWebPart

{


public
class
Author

{


public
string Name { get; set ;}


public
int NumberOfArticles { get; set; }

 

}

}

Step 4

Now code against Web Part.

  1. This is having a button, when we will click button we will loop through the grid view and find out the entire selected row.
  2. While creating a grid view, we are adding Template Field as column. This column will contain the checkbox

     


TemplateField selectTaskColumn = new
TemplateField();

selectTaskColumn.HeaderText = “Select Task”;

selectTaskColumn.ItemTemplate = new
CheckBoxTemplate(ListItemType.Item, “Select Task”);

grv.Columns.Add(selectTaskColumn);

 

  1. This code will loop through the all rows of Grid View and find out the selected row. We are iterating through and concatening all the authors in a string.

 


for (int idx = 0; idx < gridviewwithcheckbox.Rows.Count; idx++)

{


CheckBox selectCtl = (CheckBox)gridviewwithcheckbox.Rows[idx].FindControl(“selectedTask”);


HtmlInputHidden taskIdCtl = (HtmlInputHidden)gridviewwithcheckbox.Rows[idx].FindControl(“taskIdItem”);


if (selectCtl.Checked && taskIdCtl.Value != String.Empty)

{


//System.Windows.Forms.MessageBox.Show(taskIdCtl.Value.ToString());

str = str + taskIdCtl.Value.ToString();

 

 

}

WebPart1.cs

using System;

using System.Runtime.InteropServices;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Xml.Serialization;

using System.Windows;

using Microsoft.SharePoint;

using Microsoft.SharePoint.WebControls;

using Microsoft.SharePoint.WebPartPages;

using System.Collections.Generic;

using Microsoft.SharePoint.Utilities;

using System.Data;

using System.Web.UI.HtmlControls;

 

namespace AWebPart

{

[Guid(“00bc296d-8515-4d12-b876-82dc7861a8e1”)]


public
class
WebPart1 : System.Web.UI.WebControls.WebParts.WebPart

{

 

 


SPGridView gridviewwithcheckbox=null;


public WebPart1()

{

}

 


protected
override
void CreateChildControls()

{


base.CreateChildControls();


Panel p1 = new
Panel();


this.Controls.Add(p1);

gridviewwithcheckbox = new
SPGridView();

createGridViewWithCheckBox(ref gridviewwithcheckbox);

p1.Controls.Add(gridviewwithcheckbox);


Button b1 = new
Button();

b1.Text = “Click Here For Selected Item To Display”;

p1.Controls.Add(b1);

b1.Click += new
EventHandler(b1_Click);

 

 

 

}

 


void b1_Click(object sender, EventArgs e)

{


string str = string.Empty;


string strjavascript = string.Empty ;

 

 

 


for (int idx = 0; idx < gridviewwithcheckbox.Rows.Count; idx++)

{


CheckBox selectCtl = (CheckBox)gridviewwithcheckbox.Rows[idx].FindControl(“selectedTask”);


HtmlInputHidden taskIdCtl = (HtmlInputHidden)gridviewwithcheckbox.Rows[idx].FindControl(“taskIdItem”);


if (selectCtl.Checked && taskIdCtl.Value != String.Empty)

{


//System.Windows.Forms.MessageBox.Show(taskIdCtl.Value.ToString());

str = str + taskIdCtl.Value.ToString();

 

 

}

 

}

 

Page.RegisterStartupScript(“a”, strjavascript);

 

}

 


public
List<Author> GetAuthorDetails()

{


try

{


List<Author> Authors = new
List<Author>()

{


new
Author(){Name = “Praveen Masood”,NumberOfArticles =200},


new
Author(){Name = “R Raveen “,NumberOfArticles = 500},


new
Author(){ Name =“Dhananjay Kumar”,NumberOfArticles =85},


new
Author(){Name =” Mahesh Chand “,NumberOfArticles =600}

 

};


return Authors;

}


catch (Exception ex)

{


SPUtility.TransferToErrorPage(ex.Message);


return
null;

}

 

}

 


public
void createGridViewWithCheckBox(ref
SPGridView grv)

{


try

{


// grv = new SPGridView();


DataTable dt = new
DataTable();

dt.Columns.Add(“Name”, typeof(string));

dt.Columns.Add(“NArticles”, typeof(int));


DataRow row;


foreach (Author author in GetAuthorDetails())

{

row = dt.Rows.Add();

row[“Name”] = author.Name;

row[“NArticles”] = author.NumberOfArticles;

 

}


TemplateField selectTaskColumn = new
TemplateField();

selectTaskColumn.HeaderText = “Select Task”;

selectTaskColumn.ItemTemplate = new
CheckBoxTemplate(ListItemType.Item, “Select Task”);

grv.Columns.Add(selectTaskColumn);

 


SPBoundField field;

field = new
SPBoundField();

field.HeaderText = “Name”;

field.DataField = “Name”;

grv.Columns.Add(field);

 

field = new
SPBoundField();

field.HeaderText = “Number of Articles”;

field.DataField = “NArticles”;

grv.Columns.Add(field);

grv.AutoGenerateColumns = false;

grv.DataSource = dt.DefaultView;

grv.DataBind();

 

 

}


catch (Exception ex)

{

 


SPUtility.TransferToErrorPage(ex.Message);

 

}

 

 

 

}

 


private
void gridviewwithcheckbox_RowDataBound(object sender, GridViewRowEventArgs e)

{


if (e.Row.RowType == DataControlRowType.DataRow)

{

 


HtmlInputHidden itemId = (HtmlInputHidden)e.Row.FindControl(“taskIdItem”);


if (itemId != null)

{


DataRowView data = (DataRowView)e.Row.DataItem;

itemId.Value = data[“TaskId”].ToString();

}

}

}

 

 

}

}

 

 

Right click and deploy the web part to the sharepoint site.

Output


Conclusion

In this article , I shown How to add a checkbox in SPGridview. Thanks for reading.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s