Quantcast
Channel: SharePoint 2010 - Development and Programming forum
Viewing all articles
Browse latest Browse all 11508

Data is not loading on fist click of button it is coming in 2nd click of custom webpart

$
0
0

Hi Techies,

We are facing one issue from the below code when it is deployed in a SharePoint 2010 application. On first click data is not coming but were as in the second click of same button the data is populating. Please help us to resolve this.
# region Namespaces
using System;
using System.Collections.Generic;
using System.Text;
using System.Web.UI.WebControls;
using Microsoft.SharePoint;
using Microsoft.SharePoint.WebPartPages;
using Microsoft.SharePoint.WebControls;
using Microsoft.SharePoint.Utilities;
using System.Web.UI;
using System.Web.UI.WebControls.WebParts;
using System.Web;
using Microsoft.Practices.EnterpriseLibrary.Logging;

# endregion

namespace DSRCustomWebPart
{
    /// <summary>
    /// This class is used for searching articles.
    /// </summary>
    public class ArticleSearch : System.Web.UI.WebControls.WebParts.WebPart
    {
        # region Object Declarations

        private SPWeb web;
        private bool connected = false;
        private Label lblToDate = new Label();
        private Label lblFromDate = new Label();
      
        private DateTimeControl dtFromDateControl = new DateTimeControl();
        private DateTimeControl dtToDateControl = new DateTimeControl();

        private Button btnSearch = new Button();
        private Button btnShowAll = new Button();

        # endregion

        # region Override Methods

        protected override void CreateChildControls()
        {
            // Get SPWeb object if object is not already instantiated
            if (!connected)
            {
                web = SPControl.GetContextWeb(this.Context);
                connected = true;
            }

            //From Date Control
            lblFromDate.ID = "lblFromDate";
            lblFromDate.Text = "Start Date";
            Controls.Add(lblFromDate);

            dtFromDateControl.ID = "dtFromDateControl";
            dtFromDateControl.DateOnly = true;
           
            Controls.Add(dtFromDateControl);

            //To Date Control
            lblToDate.ID = "lblToDate";
            lblToDate.Text = "End Date";
            Controls.Add(lblToDate);

            dtToDateControl.ID = "dtToDateControl";
            dtToDateControl.DateOnly = true;
            Controls.Add(dtToDateControl);

            // Search Button
            btnSearch.ID = "btnSearch";
            btnSearch.Text = "Search";
            Controls.Add(btnSearch);

            // Show All Button
            btnShowAll.ID = "btnShowAll";
            btnShowAll.Text = "Show All";
            Controls.Add(btnShowAll);

            if (!Page.IsPostBack)
            {
                try
                {
                    dtFromDateControl.SelectedDate = DateTime.Now.AddDays(-5);
                    dtToDateControl.SelectedDate = DateTime.Now;
                    web.AllowUnsafeUpdates = true;
                    fnShow_All();
                }
                finally
                {
                    web.AllowUnsafeUpdates = false;
                }
            }
            //Event Handlers
            btnSearch.Click += new EventHandler(btnSearch_Click);
            btnShowAll.Click += new EventHandler(btnShowAll_Click);

        }

        public void BindUserGroup(DropDownList ddlUserGroup)
        {
            SPWeb web = SPControl.GetContextWeb(this.Context);
            SPList list = web.Lists[DSRConstants.SPList_EmailUsers];   // web.Lists["Email Users"];
            SPQuery query = new SPQuery();

            SPUser user = web.CurrentUser;
            string id = user.ID.ToString();
            string name = user.LoginName;
            string a = user.Name;
            string sInternalName = list.Fields[DSRConstants.SPListColumn_EUsers_UserID].InternalName;   //list.Fields["User ID"].InternalName;               

            query.Query = "<Where><Eq><FieldRef Name='" + sInternalName + "' Type='Integer' LookupId='True'/><Value Type='Integer'>" + id +"</Value></Eq></Where>";
            //Aug 26 2013
            query.RowLimit = 100;

            SPListItemCollection itemCol = list.GetItems(query);
            String[] UserGroups = itemCol[0]["User Group"].ToString().Split(new Char[] { ';', '#' });

            for (int i = 2; i <= UserGroups.Length; i += 4)
                ddlUserGroup.Items.Add(UserGroups[i].ToString());
        }

        protected override void Render(System.Web.UI.HtmlTextWriter writer)
        {
            //writer.Write("<br></br>");

            writer.Write("<table>");

            //From Date
            writer.Write("<tr>");
            writer.Write("<td>");
            lblFromDate.RenderControl(writer);
            writer.Write("</td>");
            writer.Write("<td>");
            dtFromDateControl.RenderControl(writer);
            writer.Write("</td>");

            //To Date
            writer.Write("<td>");
            lblToDate.RenderControl(writer);
            writer.Write("</td>");
            writer.Write("<td>");
            dtToDateControl.RenderControl(writer);
            writer.Write("</td>");
            writer.Write("</tr>");

           
            // Button Controls
            writer.Write("<tr>");
            writer.Write("<td>");
            btnSearch.RenderControl(writer);
            writer.Write("</td>");
            writer.Write("<td>");
            btnShowAll.RenderControl(writer);
            writer.Write("&nbsp;");
            writer.Write("&nbsp;");
            writer.Write("&nbsp;");
            lblDateCheck.RenderControl(writer);
            writer.Write("</td>");
            writer.Write("</tr>");
            writer.Write("</table>");
           
            //writer.Write("<br></br>");
        }

        # endregion

        # region Event Handlers

        /// <summary>
        /// Event Handler: btnShowAll_Click(object, EventArgs)
        /// Description: Display all records in the 'Search Article View'.
        /// Target List: Article
        /// Target View: Search Article
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnShowAll_Click(object sender, EventArgs e)
        {
            txtTitle.Text = "";
            drlCompanyName.Text = "";
            drlTherapeauticCatg.Text = "";
            drlIndustry.Text = "";
            txtSourceOrAuthor.Text = "";

            try
            {
                if (!connected)
                {
                    web = SPControl.GetContextWeb(this.Context);
                    connected = true;
                }

                SPList spltArticle = web.Lists[DSRConstants.SPList_Article];
                SPView view = web.Lists[DSRConstants.SPList_Article].Views[DSRConstants.SPListView_Article_Search_Article];
                view.Hidden = false;
                SPQuery query = new SPQuery();

                // Retrieve all articles
                query.Query = "<OrderBy><FieldRef Name='" + spltArticle.Fields[DSRConstants.SPListColumn_Article_ID].InternalName + "' Ascending='FALSE'/></OrderBy>";
                //Santosh-Aug 26 2013
                query.RowLimit = 4000;
                view.Query = query.Query;
                view.Update();
            }
            catch (Exception exObj)
            {
                DSRLogger objLog = new DSRLogger();
                objLog.LogErrors(exObj.Message + exObj.StackTrace);
            }
        }

        /// <summary>
        /// Event Handler: btnSearch_Click(object, EventArgs)
        /// Description: Search and display query based on user selection.
        /// Target List: Article
        /// Target View: Search Article
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnSearch_Click(object sender, EventArgs e)
        {

            try
            {
                string x = btnSearch.ID.ToString();
                btnSearch.ID = "btnSearch";
                if (dtFromDateControl.SelectedDate <= dtToDateControl.SelectedDate)
                {
                    // Get SPWeb object if object is not already instantiated
                    if (!connected)
                    {
                        web = SPControl.GetContextWeb(this.Context);
                        connected = true;
                    }
                    SPList spltArticle = web.Lists[DSRConstants.SPList_Article];
                    SPView view = web.Lists[DSRConstants.SPList_Article].Views[DSRConstants.SPListView_Article_Search_Article];
                    view.Hidden = false;
                    SPQuery query = new SPQuery();
                    query.Query = "<OrderBy><FieldRef Name='" + spltArticle.Fields[DSRConstants.SPListColumn_Article_ID].InternalName +"'/></OrderBy>";
                    //Santosh-Aug 26 2013
                    query.RowLimit = 4000;
                  
                    string dtFromSelected = Microsoft.SharePoint.Utilities.SPUtility.CreateISO8601DateTimeFromSystemDateTime(Convert.ToDateTime(dtFromDateControl.SelectedDate));
                    string dtToSelected = Microsoft.SharePoint.Utilities.SPUtility.CreateISO8601DateTimeFromSystemDateTime(Convert.ToDateTime(dtToDateControl.SelectedDate));

                    int iAnd = 0;
                    int iAndCnt = 0;
                    int iEnd = 0;
                    int iFlag = 0;

                    txtTitletext.Trim();
                    txtSourceAuthor.Trim();

                    // Building Query statement as per user selection of Search Criteria fields.


                    if (!dtFromDateControl.IsDateEmpty || !dtToDateControl.IsDateEmpty)
                    {
                        if (!dtFromDateControl.IsDateEmpty)
                        {
                            iAnd++;
                        }

                        if (!dtToDateControl.IsDateEmpty)
                        {
                            iAnd++;
                        }
                       
                    }

                    iAndCnt = iAnd - 1;

                    if (iAnd > 0)
                    {
                        query.Query += "<Where>";
                        for (int i = 0; i < iAndCnt; i++)
                        {
                            query.Query += "<And>";
                        }
                    }

                    // For one or two fields selected in Search Criteria
                    if (iAndCnt == 0 || iAndCnt == 1)
                    {
                        if (!dtFromDateControl.IsDateEmpty)
                        {
                            query.Query += "<Geq><FieldRef Name='" + spltArticle.Fields[DSRConstants.SPListColumn_Article_StoryDate].InternalName+ "'/><Value Type='DateTime'>" + dtFromSelected + "</Value></Geq>";
                        }

                        if (!dtToDateControl.IsDateEmpty)
                        {
                            query.Query += "<Leq><FieldRef Name='" + spltArticle.Fields[DSRConstants.SPListColumn_Article_StoryDate].InternalName+ "'/><Value Type='DateTime'>" + dtToSelected + "</Value></Leq>";
                        }

                        if (iAndCnt == 1)
                            query.Query += "</And>";
                    }

                    //For greater than two fields selected in Search Criteria
                    if (iAndCnt > 1)
                    {

                        string sColKey = string.Empty;

                        if (!dtFromDateControl.IsDateEmpty)
                        {
                            iEnd++;
                            query.Query += "<Geq><FieldRef Name='" + spltArticle.Fields[DSRConstants.SPListColumn_Article_StoryDate].InternalName+ "'/><Value Type='DateTime'>" + dtFromSelected + "</Value></Geq>";
                        }

                        if (!dtToDateControl.IsDateEmpty)
                        {
                            iEnd++;
                            query.Query += "<Leq><FieldRef Name='" + spltArticle.Fields[DSRConstants.SPListColumn_Article_StoryDate].InternalName+ "'/><Value Type='DateTime'>" + dtToSelected + "</Value></Leq>";
                        }

                        if (iEnd == 2)
                        {
                            query.Query += "</And>";
                            iFlag = 1;
                        }                       
                    }

                    if (iAnd > 0)
                    {
                        query.Query += "</Where>";
                    }


                    view.Query = query.Query;
                    view.Update();
                }
                else
                {
                    lblDateCheck.Visible = true;
                }
            }
            catch (Exception exObj)
            {
                DSRLogger objLog = new DSRLogger();
                objLog.LogErrors(exObj.Message + exObj.StackTrace);
            }


        }

        # endregion

        # region Public Methods
        /// <summary>
        /// The method is called for displaying all the articles without any filter
        /// or search criteria.
        /// </summary>
        public void fnShow_All()
        {

            string dtFromSelected = Microsoft.SharePoint.Utilities.SPUtility.CreateISO8601DateTimeFromSystemDateTime(Convert.ToDateTime(dtFromDateControl.SelectedDate));
            string dtToSelected = Microsoft.SharePoint.Utilities.SPUtility.CreateISO8601DateTimeFromSystemDateTime(Convert.ToDateTime(dtToDateControl.SelectedDate));

            try
            {
                if (!connected)
                {
                    web = SPControl.GetContextWeb(this.Context);
                    connected = true;
                }

                SPList spltArticle = web.Lists[DSRConstants.SPList_Article];
                SPView view = web.Lists[DSRConstants.SPList_Article].Views[DSRConstants.SPListView_Article_Search_Article];
                view.Hidden = false;
                SPQuery query = new SPQuery();

                // Retrieve all articles
                query.Query = "<OrderBy><FieldRef Name='" + spltArticle.Fields[DSRConstants.SPListColumn_Article_StoryDate].InternalName + "' Ascending='FALSE'/></OrderBy>";
                query.Query += "<Where>";
                query.Query += "<And>";
                query.Query += "<Geq><FieldRef Name='" + spltArticle.Fields[DSRConstants.SPListColumn_Article_StoryDate].InternalName + "'/><Value Type='DateTime'>" + dtFromSelected + "</Value></Geq>";
                query.Query += "<Leq><FieldRef Name='" + spltArticle.Fields[DSRConstants.SPListColumn_Article_StoryDate].InternalName + "'/><Value Type='DateTime'>" + dtToSelected + "</Value></Leq>";
                query.Query += "</And>";
                query.Query += "</Where>";
                //Santosh-Aug 26 2013
                query.RowLimit = 4000;
                view.Query = query.Query;
                view.Update();
            }
            catch (Exception exObj)
            {
                DSRLogger objLog = new DSRLogger();
                objLog.LogErrors(exObj.Message + exObj.StackTrace);
            }
        }
        #   endregion

    }
}


Viewing all articles
Browse latest Browse all 11508


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>