`
yake2011
  • 浏览: 18253 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

Adding CheckBoxes in SharePoint GridView (SPGridView)

 
阅读更多
原文链接

 

 

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.

 

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

Create a SharePoint project by selecting Web Part template.

 



 

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; }  

    }
}

 

 

  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);

  3. 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 have shown how to add a checkbox in SPGridview. Thanks for reading.

  • 大小: 41.4 KB
  • 大小: 7.5 KB
  • 大小: 42.3 KB
  • 大小: 41.8 KB
  • 大小: 52.7 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics