Saturday, December 20, 2008

Implementing Multiple Sorting in GridView.

Implementing Multiple Sorting in GridView.


In my project, I am using a grid view and have to apply MultiColumn sorting on the column of the Gridview. I have used listDictionary to store all the applied sort expression and also used DataView to sort the gridview data as par the sorting.

The Code I wrote is :



public ListDictionary ld_SortExpression;

public ListDictionary SortExpression
{
get
{
ld_SortExpression = (ListDictionary)ViewState["SortExpressions"];
if (ld_SortExpression == null)
ld_SortExpression = new ListDictionary();
return ld_SortExpression;
}
set { ViewState["SortExpressions"] = value; }
}

protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
BindControls();
}

}

protected void gvRemoval_Sorting(object sender, GridViewSortEventArgs e)
{
SaveSortState(e);
BindControls();
}


Private void BindControls()
{
DataSet ds = GetData(); 'GetData()gets the data from the database.
if (ds!= null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
{
gridView.DataSource= SortData(ds);
gridView.DataBind();
}
}

//Saves All the SortExpression and SortDirection in ListDictionary.
Private void SaveSortState(GridViewSortEventArgs e)
{
ld_SortExpression = SortExpression;
string sortDirection = string.Empty;

if (!ld_SortExpression.Contains(e.SortExpression))
ld_SortExpression.Add(e.SortExpression, e.SortDirection.ToString().Replace("Ascending", "ASC").Replace("Descending", "DESC"))

else
{
sortDirection = ld_SortExpression[e.SortExpression].ToString();
if (sortDirection == "ASC")
{
ld_SortExpression[e.SortExpression] = "DESC";
}
else if (sortDirection == "DESC")
ld_SortExpression.Remove(e.SortExpression);
}
SortExpression = ld_SortExpression;
}

//Sorts Data.
Private DataView SortData(DataSet ds)
{
DataTable dt = ds.Tables[0];
DataView dv = dt.DefaultView;
StringBuilder sbSortExpression = new StringBuilder();

if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
{
if (SortExpression.Count > 0)
{
string[] myKeys = new string[SortExpression.Count];
SortExpression.Keys.CopyTo(myKeys, 0);
for (int i = 0; i <= SortExpression.Count - 1; i++) { sbSortExpression.Append(myKeys[i]); sbSortExpression.Append(" "); sbSortExpression.Append(SortExpression[myKeys[i]]); if (i != SortExpression.Count - 1) { sbSortExpression.Append(", "); } } dv.Sort = sbSortExpression.ToString(); } } return dv; }



-Arvind :)

Saturday, December 13, 2008

How to get the Second Sunday of march/ First Sunday Of November in sql server for implementing Daylight saving time.

How to get the Second Sunday of march/First Sunday Of November in sql server for implementing Daylight saving time.?

Daylight saving time is the convention of advancing clocks so that afternoons have more daylight and mornings have less. Typically clocks are adjusted forward one hour near the start of spring and are adjusted backward in autumn.
In USA, from 2007, daylight saving time falls between ”first Sunday of November” to GetSecondSundayOfMarch.
In one of my project, i have to implement the daylight saving time and for this I have to get the second Sunday of march and first Sunday of November .In order to get on which date, “Second Sunday of march” and ”first Sunday of November” come, i created following functions in sql Server
GetSecondSundayOfMarch
CREATE function [dbo].[GetSecondSundayOfMarch](@year int)
returns datetime
as
begin
declare @dateTime datetime
set @dateTime = cast('3/8/' + cast(@year as varchar(4)) as datetime)
set @dateTime = case when datepart(dw, @dateTime) = 1
then @dateTime
else dateadd(dd, 8 - datepart(dw, @dateTime), @dateTime) end
return @dateTime
end

and first Sunday of November

CREATE function [dbo].[GetFirstSundayOfNovember](@year int)
returns datetime
as
begin
declare @dateTime datetime
set @dateTime = cast('11/1/' + cast(@year as varchar(4)) as datetime)
set @dateTime = case when datepart(dw, @dateTime) = 1
then @dateTime
else dateadd(dd, 8 - datepart(dw, @dateTime), @dateTime) end
return @dateTime
end




Thanks
Arvind - Ramp India.

Friday, November 21, 2008

How to excute Database query on remote server system

How to excute Database query on remote server system?
Ans: First Run sp_addlinkedserver storedProc with the server name as
exec sp_addlinked server ServerName

Then write your query eg:
Select * from servername.DBName.Tablename
-Arvind

Sunday, June 29, 2008