Prasad Bolla's SharePoint Blog

Click Here to go through the Interesting posts within my Blog.

Click Here to go through the new posts in my blog.

Saturday, March 31, 2012

Binding Data from SharePoint Links List to SpGridView without a single line of loop.

ascx
<table width="100%" cellpadding="0" cellspacing="0">
<tr>
<td>Binding Data from SharePoint Links List to SpGridView without a Single line of Loop.</td>
</tr>
<tr>
<td>
<SharePoint:SPGridView ID="sgvLinks" runat="server" AutoGenerateColumns="false" DataKeyNames="ID">
<Columns>
<asp:BoundField HeaderText="Link Name" DataField="URL" />
</Columns>
</SharePoint:SPGridView>
</td>
</tr>
</table>


Ascx.cs
using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using Microsoft.SharePoint;
using System.Security;
namespace DLLWebPart.DLLWebPart
{
    public partial class DLLWebPartUserControl : UserControl
    {
        protected void Page_Load(object sender, EventArgs e)
        {
                sgvLinks.RowDataBound += new GridViewRowEventHandler(sgvLinks_RowDataBound);
                SPWeb currentWeb = SPContext.Current.Web;
                SPList LinksList = currentWeb.Lists["Links"];
                SPQuery sQuery = new SPQuery();
                sQuery.Query = "<OrderBy><FieldRef Name='ID' Ascending='False' /></OrderBy>";
                sQuery.ViewFields = "<FieldRef Name='ID' /><FieldRef Name='URL' />";
                SPListItemCollection myColl = LinksList.GetItems(sQuery);
                if (myColl.Count > 0)
                {
                    if (!IsPostBack)
                    {
                        sgvLinks.DataSource = myColl.GetDataTable();
                        sgvLinks.DataBind();
                    }
                }
        }
        string strItemID = "";
        void sgvLinks_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            try
            {
                if (e.Row.RowType == DataControlRowType.DataRow)
                {
                    SPSecurity.RunWithElevatedPrivileges(delegate()
                    {
                        strItemID = sgvLinks.DataKeys[e.Row.RowIndex].Value.ToString();
                        SPWeb currentWeb = SPContext.Current.Web;
                        SPList lst = currentWeb.Lists["Links"];
                        SPQuery sQuery = new SPQuery();
                        sQuery.Query = "<Where><Eq><FieldRef Name='ID' /><Value Type='Counter'>"+strItemID+"</Value></Eq></Where>";
                        sQuery.ViewFields = "<FieldRef Name='ID' /><FieldRef Name='URL' />";
                        SPListItemCollection myColl = lst.GetItems(sQuery);
                        if (myColl.Count > 0)
                        {
                            SPListItem item = myColl[0];
                            SPFieldUrlValue URL = new SPFieldUrlValue(item["URL"].ToString());
                            e.Row.Cells[0].Text = "<a href='"+URL.Url+"'>"+URL.Description+"</a>";
                       
                        }
                    });
                }
            }
            catch (Exception ex)
            {

                Response.Write(ex.ToString());
            }
        }
    }
}




No comments:

Post a Comment