Trim Function in JavaScript

December 26, 2007

function trim(stringToTrim)
{
return stringToTrim.replace(/^\s+|\s+$/g,”");
}


Bind GridView with XML

December 21, 2007

XML File

<?xml version=”1.0″ encoding=”UTF-8″?>
<root>
<fruit id=”1″>
<fid>1</fid>
<fname>Lemons</fname>
<fcolor>Yellow</fcolor>
</fruit>
<fruit id=”2″>
<fid>2</fid>
<fname>Grape</fname>
<fcolor>White</fcolor>
</fruit>
<fruit id=”3″>
<fid>3</fid>
<fname>Grape</fname>
<fcolor>Black</fcolor>
</fruit>
<fruit id=”4″>
<fid>4</fid>
<fname>Banana</fname>
<fcolor>Yellow</fcolor>
</fruit>
</root>

ASPX Page

<asp:GridView ID=”GridView1″ runat=”server”
AutoGenerateColumns=”false”
DataKeyNames=”id”
DataSourceID=”XmlDataSource1″
Width=”60%”
OnRowCancelingEdit=”GridView1_RowCancelingEdit”
OnRowEditing=”GridView1_RowEditing”
OnRowUpdating=”GridView1_RowUpdating”
OnRowDeleting=”GridView1_RowDeleting”>
<Columns>

<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton ID=”btnEdit” runat=”server”
Text=”Edit”
CommandName=”Edit”>
</asp:LinkButton>
<asp:LinkButton ID=”btnDelete” runat=”server”
Text=”Delete”
CommandName=”Delete”>
</asp:LinkButton>
</ItemTemplate>
<EditItemTemplate>
<asp:LinkButton ID=”btnUpdate” runat=”server”
Text=”Update”
CommandName=”Update”>
</asp:LinkButton>
<asp:LinkButton ID=”btnCancel” runat=”server”
Text=”Cancel”
CommandName=”Cancel”>
</asp:LinkButton>
</EditItemTemplate>
<ItemStyle Width=”10%” />
</asp:TemplateField>

<asp:TemplateField HeaderText=”ID”>
<ItemTemplate>
<asp:Label ID=”lblID” runat=”server”
Text=’<%# XPathBinder.Eval(Container.DataItem, “fid”)%>’>
</asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID=”txtID” runat=”server”
Text=’<%# XPathBinder.Eval(Container.DataItem, “fid”)%>’>
</asp:TextBox>
</EditItemTemplate>
<ItemStyle Width=”30%” />
</asp:TemplateField>

<asp:TemplateField HeaderText=”Name”>
<ItemTemplate>
<asp:Label ID=”lblName” runat=”server”
Text=’<%# XPathBinder.Eval(Container.DataItem, “fname”)%>’>
</asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID=”txtName” runat=”server”
Text=’<%# XPathBinder.Eval(Container.DataItem, “fname”)%>’>
</asp:TextBox>
</EditItemTemplate>
<ItemStyle Width=”30%” />
</asp:TemplateField>

<asp:TemplateField HeaderText=”Colour”>
<ItemTemplate>
<asp:Label ID=”lblColor” runat=”server”
Text=’<%# XPathBinder.Eval(Container.DataItem, “fcolor”)%>’>
</asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID=”txtColor” runat=”server”
Text=’<%# XPathBinder.Eval(Container.DataItem, “fcolor”)%>’>
</asp:TextBox>
</EditItemTemplate>
<ItemStyle Width=”30%” />
</asp:TemplateField>

</Columns>
<HeaderStyle ForeColor=”White” BackColor=”DarkGreen” />
</asp:GridView>
<asp:XmlDataSource ID=”XmlDataSource1″ runat=”server”
DataFile=”~/App_Data/myData.xml”
XPath= “root/fruit”>
</asp:XmlDataSource>

ASPX.CS

#region “GridView Events”

#region “Edit Events”

#region “Row Editing Event”

protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
GridView1.EditIndex = e.NewEditIndex;
GridView1.DataBind();
}

#endregion

#region “Row Updating Event”

protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
string myID = GridView1.DataKeys[e.RowIndex].Value.ToString();
string fruitID = ((TextBox)GridView1.Rows[e.RowIndex].FindControl(“txtID”)).Text;
string fruitName = ((TextBox)GridView1.Rows[e.RowIndex].FindControl(“txtName”)).Text;
string fruitColor = ((TextBox)GridView1.Rows[e.RowIndex].FindControl(“txtColor”)).Text;
XmlDocument xmlDoc = XmlDataSource1.GetXmlDocument();
XmlNodeList nodeList = xmlDoc.SelectNodes(“root/fruit[@id='" + myID + "']“);
nodeList[0].ChildNodes[0].InnerText = fruitID;
nodeList[0].ChildNodes[1].InnerText = fruitName;
nodeList[0].ChildNodes[2].InnerText = fruitColor;
//xmlDoc.Save(Server.MapPath(“./”)+”/App_Data/hi.xml”);
XmlDataSource1.Save();
GridView1.EditIndex = -1;
e.Cancel = true;
GridView1.DataBind();
}

#endregion

#region “Row Cancelling Edit Event”

protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
{
GridView1.EditIndex = -1;
GridView1.DataBind();

}

#endregion

#endregion

#region “Deleting Events”

protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
System.Xml.XmlDocument Document = XmlDataSource1.GetXmlDocument();
string myID = GridView1.DataKeys[e.RowIndex].Value.ToString();
System.Xml.XmlNode node = Document.SelectSingleNode(“root/fruit[@id='" + myID + "']“);
node.ParentNode.RemoveChild(node);
XmlDataSource1.Save();
e.Cancel = true;
GridView1.DataBind();
}

#endregion

#endregion


Custom Paging and Sorting in a Filtered GridView

December 6, 2007

sprite.ng

ASPX


<html xmlns=”http://www.w3.org/1999/xhtml” >
<head runat=”server”>
<title>Untitled Page</title>
<link type=”text/css” rel=”Stylesheet” href=”GridStyle.css” />
<script type=”text/javascript” src=”App_Scripts/JScript2.js”>
</script>
</head>
<body>
<form id=”form1″ runat=”server”>
<div>

<table>
<tr>
<td>
Country Name:
</td>
<td>
<asp:TextBox ID=”txtCountries” runat=”server”>
</asp:TextBox>
</td>
<td>
<asp:Button ID=”btnpopulate” runat=”server”
Text=”Populate” OnClick=”btnpopulate_Click”/>
</td>
</tr>
<tr>
<td colspan=”3″>
<asp:GridView ID=”gvwCountries” runat=”server”
AllowPaging=”true”
AllowSorting=”true”
AutoGenerateColumns=”false”
OnRowDataBound=”gvwCountries_RowDataBound”
OnSorting=”gvwCountries_Sorting” >
<EmptyDataTemplate>
No Rows to Display
</EmptyDataTemplate>

<Columns>

<asp:TemplateField HeaderText=”Serial No”>
<ItemTemplate>
<%# Container.DataItemIndex %>
</ItemTemplate>
</asp:TemplateField>

<asp:TemplateField HeaderText=”Country Name” SortExpression=”countryName”>
<ItemTemplate>
<asp:Label ID=”lblCountries” runat=”server”
Text = ‘<%# DataBinder.Eval(Container.DataItem, “countryName”) %>’>
</asp:Label>
</ItemTemplate>
</asp:TemplateField>

</Columns>

<PagerTemplate>
<asp:LinkButton ID=”Btn_Previous” runat=”server”
CommandName=”Previous”
OnCommand=”ChangePage”
Text=”Previous” >
</asp:LinkButton>

Page

<%–<asp:Label ID=”lblCurrentPage” runat=”server”>
</asp:Label>–%>
<asp:DropDownList ID=”ddlPages” runat=”server” AutoPostBack=”true” OnSelectedIndexChanged=”ddlPages_SelectedIndexChanged”>
</asp:DropDownList>

of

<asp:Label ID=”lblTotalPages” runat=”server”>
</asp:Label>

<asp:LinkButton ID=”Btn_Next” runat=”server”
CommandName=”Next”
OnCommand=”ChangePage”
Text=”Next” >
</asp:LinkButton>
</PagerTemplate>

<AlternatingRowStyle CssClass=”altrowstyle” />
<HeaderStyle CssClass=”headerstyle” />
<RowStyle CssClass=”rowstyle” />
<PagerStyle CssClass=”pagerstyle” />

</asp:GridView>
</td>
</tr>
</table>

</div>
</form>
</body>

ASPX.CS
#region “Local Variables and Declarations”

SqlParameter[] parmCountries = new SqlParameter[10];
protected static int currentPageNumber = 1;
private const int PAGE_SIZE = 10;
int parmCount = 3;
DataSet ds = new DataSet();
DataTable dt = new DataTable();

#endregion

#region “Page Load Events”

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

}
}

#endregion

#region “Populate Button Events”

protected void btnpopulate_Click(object sender, EventArgs e)
{
currentPageNumber = 1;
BindGrid();
}

#endregion

#region “GridView Events”

protected void gvwCountries_RowDataBound(object sender, GridViewRowEventArgs e)
{
string mySortExpression = (Session["mySortExpression"] != null ? Session["mySortExpression"].ToString() : “”);
GridView gridView = (GridView)sender;
if (mySortExpression.Length > 0)
{
int cellIndex = -1;
foreach (DataControlField field in gridView.Columns)
{
if (field.SortExpression == mySortExpression)
{
cellIndex = gridView.Columns.IndexOf(field);
if (e.Row.RowType == DataControlRowType.Header)
{
string mySortDirection = (Session["mySortDirection"] != null ? Session["mySortDirection"].ToString() : “”);
e.Row.Cells[cellIndex].CssClass += (mySortDirection == “ASC” ? ” sortascheader” : ” sortdescheader”);
}
else if (e.Row.RowType == DataControlRowType.DataRow)
{
e.Row.Cells[cellIndex].CssClass += (e.Row.RowIndex % 2 == 0 ? ” sortaltrow” : “sortrow”);
}
break;
}
}
}
}

protected void gvwCountries_Sorting(object sender, GridViewSortEventArgs e)
{
Session["mySortExpression"] = e.SortExpression;
DataView dataView = new DataView(GetMyDataTable());
dataView.Sort = e.SortExpression + ” ” + GetSortDirection(e.SortExpression);
gvwCountries.DataSource = dataView;
gvwCountries.DataBind();
ActivatePages();
}

#endregion

#region “Custom Functions”

#region “DataBind Events”

public DataTable GetMyDataTable()
{
string strConnection = ConfigurationManager.ConnectionStrings["LoginCon"].ConnectionString;
SqlConnection myConnection = new SqlConnection(strConnection);
SqlCommand cmdUsers = new SqlCommand(“SP_GetSomeCountries”, myConnection);
cmdUsers.CommandType = CommandType.StoredProcedure;
parmCountries[0] = new SqlParameter(“@startRowIndex”, currentPageNumber);
parmCountries[1] = new SqlParameter(“@maximumRows”, PAGE_SIZE);
parmCountries[2] = new SqlParameter(“@totalRows”, SqlDbType.Int, 4);
parmCountries[2].Direction = ParameterDirection.Output;
if (txtCountries.Text.Trim() != “”)
{
parmCountries[3] = new SqlParameter(“@CountryName”, txtCountries.Text.Trim());
parmCount++;
}
for (int i = 0; i < parmCount; i++)
{
cmdUsers.Parameters.Add(parmCountries[i]);
}
SqlDataAdapter adapUsers = new SqlDataAdapter(cmdUsers);
adapUsers.Fill(dt);
Session["totalRows"] = (int)cmdUsers.Parameters["@totalRows"].Value;
return dt;
}

public void BindGrid()
{
gvwCountries.PageSize = PAGE_SIZE;
gvwCountries.DataSource = GetMyDataTable();
gvwCountries.DataBind();
if (Session["totalRows"].ToString() != “0″)
{
ActivatePages();
}
}

#endregion

#region “Custom Sorting”

protected string GetSortDirection(string sortBy)
{
string sortDir = “ASC”;
if (ViewState["sortBy"] != null)
{
string sortedBy = ViewState["sortBy"].ToString();
if (sortedBy == sortBy)
{
sortDir = ” DESC”;
ViewState["sortBy"] = null;
}
else
{
ViewState["sortBy"] = sortBy;
}
}
else
{
ViewState["sortBy"] = sortBy;
}
Session["mySortDirection"] = sortDir;
return sortDir;
}

#endregion

#region “Custom Paging”

protected void ChangePage(object sender, CommandEventArgs e)
{
Session["mySortDirection"] = “”;
Session["mySortExpression"] = “”;
Label lblTotalPages = (Label)gvwCountries.BottomPagerRow.FindControl(“lblTotalPages”);
//Label lblCurrentPage = (Label)gvwCountries.BottomPagerRow.FindControl(“lblCurrentPage”);
DropDownList ddlPage = (DropDownList)gvwCountries.BottomPagerRow.FindControl(“ddlPages”);
currentPageNumber = (e.CommandName == “Previous” ? Int32.Parse(ddlPage.SelectedItem.Text) – 1 : Int32.Parse(ddlPage.SelectedItem.Text) + 1);
Session["CurrentPageIndex"] = currentPageNumber;
BindGrid();
}

#endregion

#region “Display Pages”

public void ActivatePages()
{
GridViewRow gvrPager = gvwCountries.BottomPagerRow;
gvrPager.Visible = true;
double totalRows = Convert.ToInt32(Session["totalRows"].ToString());
LinkButton Btn_Previous = (LinkButton)gvrPager.FindControl(“Btn_Previous”);
LinkButton Btn_Next = (LinkButton)gvrPager.FindControl(“Btn_Next”);
Label lblTotalPages = (Label)gvrPager.FindControl(“lblTotalPages”);
DropDownList ddlPage = (DropDownList)gvrPager.FindControl(“ddlPages”);
//Label lblCurrentPage = (Label)gvrPager.FindControl(“lblCurrentPage”);
lblTotalPages.Text = Convert.ToString(Math.Ceiling(totalRows / PAGE_SIZE));
for (int i = 1; i <= Convert.ToInt32(lblTotalPages.Text); i++)
{
ddlPage.Items.Add(new ListItem(i.ToString()));
}
//lblCurrentPage.Text = currentPageNumber.ToString();
ddlPage.Items.FindByText(currentPageNumber.ToString()).Selected = true;
if (currentPageNumber == 1)
{
Btn_Previous.Enabled = false;
Btn_Next.Enabled = (Int32.Parse(lblTotalPages.Text) > 1 ? true : false);
}
else
{
Btn_Previous.Enabled = true;
Btn_Next.Enabled = (currentPageNumber == Int32.Parse(lblTotalPages.Text) ? false : true);
}
}

#endregion

#endregion

protected void ddlPages_SelectedIndexChanged(object sender, EventArgs e)
{
DropDownList ddl =(DropDownList)sender;
currentPageNumber = Convert.ToInt32(ddl.SelectedItem.Text);
BindGrid();
}

SP

ALTER PROCEDURE [SP_GetSomeCountries]
@startRowIndex int,
@maximumRows int,
@totalRows int OUTPUT

AS

DECLARE @first_id int

SET @startRowIndex = (@startRowIndex – 1) * @maximumRows + 1

IF @startRowIndex = 0
SET @startRowIndex = 1

SET ROWCOUNT @startRowIndex

SELECT @first_id = countryID FROM tbl_Countries

SET ROWCOUNT @maximumRows

SELECT countryID, countryName FROM tbl_Countries WHERE
(countryID >= @first_id )
SET ROWCOUNT 0

– GEt the total rows

SELECT @totalRows = COUNT(countryID) FROM tbl_Countries

StyleSheet

.tablestyle
{
font-family: arial;
font-size: small;
border: solid 1px #7f7f7f;
}

.altrowstyle
{
background-color: #edf5ff;
}

.headerstyle th
{
background: url(img/sprite.png) repeat-x 0px 0px;
border-color: #989898 #cbcbcb #989898 #989898;
border-style: solid solid solid none;
border-width: 1px 1px 1px medium;
color: #000;
padding: 4px 5px 4px 10px;
text-align: center;
vertical-align: bottom;
}

.headerstyle th a
{
font-weight: normal;
text-decoration: none;
text-align: center;
color: #000;
display: block;
padding-right: 10px;
}

.rowstyle .sortaltrow, .altrowstyle .sortaltrow
{
background-color: #edf5ff;
}

.rowstyle .sortrow, .altrowstyle .sortrow
{
background-color: #dbeaff;
}

.rowstyle td, .altrowstyle td
{
padding: 4px 10px 4px 10px;
border-right: solid 1px #cbcbcb;
}

.headerstyle .sortascheader
{
background: url(img/sprite.png) repeat-x 0px -100px;
}

.headerstyle .sortascheader a
{
background: url(img/dt-arrow-up.png) no-repeat right 50%;
}

.headerstyle .sortdescheader
{
background: url(img/sprite.png) repeat-x 0px -100px;
}

.headerstyle .sortdescheader a
{
background: url(img/dt-arrow-dn.png) no-repeat right 50%;
}

.pagerstyle
{
background: url(img/sprite.png) repeat-x 0px 0px;
border-color: #989898 #cbcbcb #989898 #989898;
border-style: solid solid solid none;
border-width: 1px 1px 1px medium;
color: #000;
padding: 4px 5px 4px 10px;
text-align: center;
vertical-align: bottom;
}


MultiDelete in GridView

December 4, 2007

MultiDeleting using CheckBox in ItemTemplate and DeleteButton outside GridView

In ASPX:

<table><tr><td align=”left”><asp:Button ID=”btnDelete” runat=”server” Text=”Delete” OnClick=”btnDelete_Click” /> </td>

</tr><tr><td><asp:GridView ID=”gvwCountries” runat=”server”

AutoGenerateColumns=”false”DataKeyNames=”countryID” ><Columns><asp:TemplateField>

<ItemTemplate><asp:CheckBox ID=”chkCountries” runat=”server” /></ItemTemplate></asp:TemplateField>

<asp:TemplateField><ItemTemplate><asp:Label ID=”lblCountries” runat=”server” Text=’<%# Bind(“countryName”) %>‘></asp:Label>

<input id=”hdnCountryID” type=”hidden” runat=”server” value=’<%# Bind(“countryID”) %> /></ItemTemplate></asp:TemplateField></Columns>

</asp:GridView></td></tr> </table>In ASPX.CS:

string strConn = String.Empty;SqlConnection sqlConn;SqlCommand cmdCountries;SqlDataAdapter adapCountries;DataSet dsCountries = new DataSet();SqlParameter parmCountries = new SqlParameter();protected void Page_Load(object sender, EventArgs e){

if (!IsPostBack)BindGrid();}protected void btnDelete_Click(object sender, EventArgs e){bool blnFlag = false;string cScript;

foreach (GridViewRow gvr in gvwCountries.Rows){bool blnIsChecked = ((CheckBox)gvr.FindControl(“chkCountries”)).Checked;int intCountryID = Convert.ToInt32(((HtmlInputHidden)gvr.FindControl(“hdnCountryID”)).Value);if (blnIsChecked){parmCountries = new SqlParameter(“@CountryID”, intCountryID);bool mybln = ExcecuteNonquery(“SP_DeleteCountries”, parmCountries);blnFlag =

true;}}if (!blnFlag){cScript = “<script>alert(‘Please Select atleast one CheckBox’);</script>”;ClientScript.RegisterStartupScript(typeof(Page), “clientscript”, cScript);}BindGrid();}

protected void BindGrid(){strConn = ConfigurationManager.ConnectionStrings["LoginCon"].ToString();sqlConn = new SqlConnection(strConn);cmdCountries =

new SqlCommand(“Select * from tbl_countries”, sqlConn);adapCountries = new SqlDataAdapter(cmdCountries);adapCountries.Fill(dsCountries);gvwCountries.DataSource = dsCountries;gvwCountries.DataBind();

}

protected bool ExcecuteNonquery(string strSql, SqlParameter sqlParm){SqlConnection sqlConn = new SqlConnection(ConfigurationManager.ConnectionStrings["LoginCon"].ToString());SqlCommand cmd;try{sqlConn.Open();cmd =

new SqlCommand(strSql);cmd.Connection = sqlConn;cmd.CommandType = CommandType.StoredProcedure;cmd.Parameters.Add(sqlParm);cmd.ExecuteNonQuery();if (cmd != null) cmd.Dispose();sqlConn.Close();

return true;}catch (Exception ex){return false;}}The SP:

CREATE PROCEDURE dbo.SP_DeleteCountries(@CountryID int

)ASBEGIN DELETE FROM [tbl_Countries] where [countryID] = @CountryIDEND