Tuesday, January 15, 2013

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

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