Wednesday, May 21, 2014

Another way to remove the specific item From n-dimensional array using Jquery


//Array 
var elementsArray = [
        { name: 'First Element', id: 1},
        { name: 'Second Element', id: 2 },
        { name: 'Third Element', id: 3 },
       ];


//Jquery Function to remove the current object from the array
    function RemoveElementFromArray(array, id) {
        if (array != null && array.length > 0) {
            array = $.grep(array, function (value) {
                return value.id != id;
            });
            return array;
        }
        else {
            return null;
        }
    }


//Calling
function remove()
{
//For instance, we want to remove the 2nd element having ID 2

elementsArray  =  RemoveElementFromArray(elementsArray, 2);
for(int i=0; i<elementsArray.length; i++)
{
alert(elementsArray[i].name);
}
}

Tuesday, May 6, 2014

Pass DataTable to SQL Server Stored Procedure using C# ADO.Net

Database:

//Create new type (i.e. Table data type) as input parameter to be used in ADO.Net SQL Command

CREATE TYPE DtFile as Table
(
    Id int
)

//Create Procedure and use the above created type in it.

Create Proc dbo.UspInsertFileData
(
@FileId dbo.DtFile READONLY
)
AS
Begin
        INSERT INTO MainFileData (FileId, AddedOn)
        SELECT Id, GETDATE() From dbo.DtFile
End

C# Asp.Net:

Data Access Layer:


public static int InsertFileData(DataTable dtFileIds)
{
         var sqlConnectionString = ConfigurationManager.AppSettings["fileConnection"];
         var sqlParameters = new SqlParameter[1];
         sqlParameters[0] = new SqlParameter
                                   {
                                       ParameterName = @"FileId",
                                       SqlDbType = SqlDbType.Structured,
                                       Value = fileTreeIds,
                                       TypeName = @"DtFile"
                                   };
          var result = SqlHelper.ExecuteScalar(sqlConnectionString,  CommandType.StoredProcedure,  @"UspInsertFileData" , sqlParameters);          return Convert.ToInt32(result);
}

Presentation Layer:

protected void BtnClickAddFileData(object sender, EventArgs e)
{
      var fileIds = new[] {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
      var dtFileData = new DataTable();
      if (fileIds.Length > 0)
      {
                /* Make Sure to keep the name of the data column same as given in the SQL User-Defined  type */
                dtFileData.Columns.Add(new DataColumn(@"Id", typeof(int)));
                foreach (var id in fileIds)
                {
                           var dr = dtFileData.NewRow();
                          dr["FileTreeId"] = item;
                          dtFileData.Rows.Add(dr);
                          dtFileData.AcceptChanges();
                }
       }
       var result = Dal.InsertFileData(dtFileData);
}



Tuesday, April 29, 2014

Regular Expression for Password

var Password_REGEX = /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[_*#&%@]).{8,}$/;

It meets the following criteria:
- Minimum 8 charaters
- At least one number, one alphabet and one special charater.

Thursday, April 17, 2014

Explicitly Set the MAX Size to SQLParameter Object C#

ByDefault, it will take max 400 characters. E.g.
sqlParameters[1] = new SqlParameter("@usernames", usernames);

We can explicitly Set the MAX Size to SQLParameter Object by the following way:
sqlParameters[1] = new SqlParameter("@usernames", SqlDbType.NVarChar, -1,
                                                usernames);


Wednesday, April 16, 2014

Use Multiple With Clause in one SQL Query

;With T (Name)
AS
(Select Top 1 Test1Name From Test), 
T2 (Name2) as
(
Select Top 1 Test2name From Test2
),
T3 (Name3) as
(
Select TOP 1 Test3Name From [Test3]
)
Select T.Name, T2.Name2, T3.Name3 From T, T2, T3

Thursday, April 10, 2014

Validate Emails Array using Jquery

var emailsString = "amit.jain@test.com, amit@test.com, aj@test.com";

var emailValidator = /^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/;
var emails = emailsString.split(",");
var result = false;
var pattern = new RegExp(emailValidator);
        $.each(emails, function (i) {
            debugger;
            if (emails[i] != null && emails[i] != '') {
                var email = $.trim(emails[i]);
                result = pattern.test(email);
                if (!result) {
                    alert("Enter the valid email(s) and try again !");
                    return false;
                }
            }
        });

Wednesday, February 5, 2014

How to dynamically set the application start page on Windows Phone 8

Introduction

The default start page for an application is set in WMAppManifest.xml - in the DefaultTask node of theNavigationPage tag. While having a static start page is ideal for some apps, there are many cases where it is useful to be able to dynamically select the start page.
For example, it is often useful to have:
  • a different start page for when user login credentials are stored from when they are not stored
  • a "wizard" start sequence for the first time the user activates the app
The article shows how to change the remove the default page and dynamically set the new start page in C# code. It uses the context of an app which has different screens for logging in (Login.xaml) and for when they have already entered their details (HomeScreen.xaml).
Note: It is also possible to have a default page which dynamically configures itself. While this may be suitable in many cases, usually it is better for code maintenance to have separate pages.

Removing the default page

The first step is to remove the default page that us set by default in the manifest file (WMAppManifest.xml) in apps created from the standard templates.
Simply remove NavigationPage="MainPage.xaml" from the code below.
<Tasks>
      <DefaultTask Name="_default" NavigationPage="MainPage.xaml" />
</Tasks>


For instance:
<Tasks>
      <DefaultTask Name="_default" />
</Tasks>

Set the Start Page / View after the App has initialised

The start page is specified in InitializePhoneApplication() by calling RootFrame.Navigate() (after other initialisation has completed).
RootFrame.Navigate(new Uri("/StartPage.xaml", UriKind.RelativeOrAbsolute));
The example below shows a different start page being selected based on a check of the application settings to determine if login information has already been stored (Login status is checked with IsolatedStorageSettings.ApplicationSettings.Contains("islogin").)
  private void InitializePhoneApplication()
        {
            if (phoneApplicationInitialized)
                return;
 
            // Create the frame but don't set it as RootVisual yet; this allows the splash
            // screen to remain active until the application is ready to render.
            RootFrame = new PhoneApplicationFrame();
            RootFrame.Navigated += CompleteInitializePhoneApplication;
 
            // Handle navigation failures
            RootFrame.NavigationFailed += RootFrame_NavigationFailed;
 
            // Handle reset requests for clearing the backstack
            RootFrame.Navigated += CheckForResetNavigation;
 
            // Ensure we don't initialize again
            phoneApplicationInitialized = true;
 

           // Set the Start Page according to the below code.
//Here, If IsolatedStorageSettings contains "isLogin" key, then it is redirected to HomeScreen that normally comes after login screen.            Uri uri;
            if (IsolatedStorageSettings.ApplicationSettings.Contains("islogin"))
            {
                if (!(Convert.ToString(IsolatedStorageSettings.ApplicationSettings["islogin"]).ToLower() == "yes"))
                {
                    RootFrame.Navigate(new Uri("/LoginScreen.xaml", UriKind.RelativeOrAbsolute));
                }
                else
                {
                    RootFrame.Navigate(new Uri("/HomeScreen.xaml", UriKind.RelativeOrAbsolute));               
                }
            }
            else
            {
                RootFrame.Navigate(new Uri("/LoginScreen.xaml", UriKind.RelativeOrAbsolute));
            }          
        }