how to display item of list in grid view using data table
-
mardi 6 mars 2012 13:12
Hi,
I am creating drop down list control which shows item title of specific list(contains Title, Address columns).
I wanted to display details of selected item details(that is Title and Address columns details) in grid view or other way in same web part.
How to do it?
Please find below code:
using System; using System.Collections.Generic; using System.Text; using Microsoft.SharePoint; using Microsoft.SharePoint.WebPartPages; using Microsoft.SharePoint.WebControls; using System.Web; using System.Web.UI.WebControls; using System.Data; using Microsoft.SharePoint.Administration; namespace GetLocationDetails { public class GetLocationDetails : WebPart { #region for drop down list public DropDownList listItemTitle; public SPSite currSite; public SPWeb currWeb; public SPList locationList; SPListItemCollection itemCollection; public DataTable dtResults; public string error=string.Empty; public SPGridView gridView = new SPGridView(); protected override void CreateChildControls() { //base.CreateChildControls(); listItemTitle = new DropDownList(); listItemTitle.AutoPostBack = true; listItemTitle.SelectedIndexChanged += new EventHandler(listItem_SelectedIndexChanged); gridView = new SPGridView(); gridView.AutoGenerateColumns = false; Button click = new Button(); this.Controls.Add(listItemTitle); this.Controls.Add(gridView); GetListItemTitleInDropDownList(); } private void GetListItemTitleInDropDownList() { try { currSite = SPContext.Current.Site; currWeb = SPContext.Current.Web; locationList = currWeb.Lists["Location"]; SPListItemCollection items = locationList.Items; foreach (SPListItem item in items) { listItemTitle.Items.Add(new ListItem(item.Title)); } } catch (Exception ex) { error = ex.Message; } } void listItem_SelectedIndexChanged(object sender, EventArgs e) { SPSecurity.RunWithElevatedPrivileges(delegate() { try { string str = listItemTitle.SelectedItem.ToString(); //SPListItem listItem = locationList.Items(str); currSite = SPContext.Current.Site; currWeb = SPContext.Current.Web; locationList = currWeb.Lists["Location"]; SPQuery query = new SPQuery(); query.Query = "<Where><Eq><FieldRef Name='Title'/><Value Type='Text'>'" + str + "'</Value></Eq></Where>"; SPListItemCollection listItem = locationList.GetItems(query); gridView.AutoGenerateColumns = true; gridView.DataSource = listItem.GetDataTable(); gridView.DataBind(); } catch (Exception ex) { error = ex.Message; } }); } } #endregion }Able to show the control but not able to show data of selected control.
Thanks in advance.
Regards,
Jayashri
- Modifié Jayashri10 mardi 6 mars 2012 15:41
Toutes les réponses
-
mercredi 7 mars 2012 02:42
set AllowFiltering =True for the Gridview.
check the below link:
http://www.codeproject.com/Articles/35536/Creation-of-a-SPGridview-Webpart-having-Pagination
http://www.reversealchemy.net/2009/05/24/building-a-spgridview-control-part-2-filtering/
MCTS,MCPD Sharepoint 2010. My Blog- http://sharepoint-journey.com
If a post answers your question, please click "Mark As Answer" on that post and "Vote as Helpful- Modifié Devendra Velegandla mercredi 6 février 2013 00:35
-
mercredi 7 mars 2012 09:34
Hi,
Thanks for your comments.
There was some mistake in my query.
now I am able to populate data but data table size is getting disturbed, modified code as follows:
using System; using System.Collections.Generic; using System.Text; using Microsoft.SharePoint; using Microsoft.SharePoint.WebPartPages; using Microsoft.SharePoint.WebControls; using System.Web; using System.Web.UI.WebControls; using System.Data; using Microsoft.SharePoint.Administration; namespace GetLocationDetails { public class GetLocationDetails : WebPart { public DropDownList listItemTitle; public SPSite currSite; public SPWeb currWeb; public SPList locationList; public string error = string.Empty; public SPGridView gridView = new SPGridView(); public DataTable dtResults = new DataTable(); public DataRow dr; public DataColumn dc; protected override void CreateChildControls() { //base.CreateChildControls(); listItemTitle = new DropDownList(); listItemTitle.AutoPostBack = true; listItemTitle.SelectedIndexChanged += new EventHandler(listItem_SelectedIndexChanged); gridView = new SPGridView(); gridView.AutoGenerateColumns = false; Button click = new Button(); this.Controls.Add(listItemTitle); this.Controls.Add(gridView); GetListItemTitleInDropDownList(); } private void GetListItemTitleInDropDownList() { try { currSite = SPContext.Current.Site; currWeb = SPContext.Current.Web; locationList = currWeb.Lists["Location"]; SPListItemCollection items = locationList.Items; foreach (SPListItem item in items) { listItemTitle.Items.Add(new ListItem(item.Title, item.ID.ToString())); } } catch (Exception ex) { error = ex.Message; } } void listItem_SelectedIndexChanged(object sender, EventArgs e) { SPSecurity.RunWithElevatedPrivileges(delegate() { try { string str = listItemTitle.SelectedItem.ToString(); currSite = SPContext.Current.Site; currWeb = SPContext.Current.Web; locationList = currWeb.Lists["Location"]; SPQuery query = new SPQuery(); query.Query = "<Where><Eq><FieldRef Name='Title'/><Value Type='Text'>" + str + "</Value></Eq></Where>"; SPListItemCollection listItem = locationList.GetItems(query); //creating data table columns dc = new DataColumn("Title", typeof(string)); dtResults.Columns.Add(dc); dc = new DataColumn("Meeting Room Name", typeof(string)); dtResults.Columns.Add(dc); //adding records of particular list item foreach (SPListItem item in listItem) { dr = dtResults.NewRow(); dr["Title"] = item["Title"].ToString(); dr["Meeting Room Name"] = item["MeetingRoom"].ToString(); dtResults.Rows.Add(dr); //return (dtResults); } //gridView.AutoGenerateColumns = true; gridView.DataSource = dtResults; gridView.DataBind(); Controls.Add(gridView); //gridView.AllowFiltering = true; } catch (Exception ex) { error = ex.Message; } }); } } }Please help me out.
Thanks in advance.
Regards,
Jayashri

