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(" ");
writer.Write(" ");
writer.Write(" ");
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
}
}