Might be some of you already know about Dictionaries in JavaScript. But recently I, worked on JavaScript dictionary. And that was really interesting and helpful for me. So I wanted to share my findings to you all. Please share your feedback for my posting.
JavaScript provides us a way to make a Dictionary object and use it as a C# dictionary. Although we would not be having all the properties that is supported by C# dictionary, but we will be able to use it as a normal dictionary i.e. in key value format.
Let’s see one simple example:
I have stored list of all week days as keys and assigned some numbers to these as values. Let’s see the code.
function CreateDayDictionary() { var days = new Array(); days['Sunday'] = 1; days['Monday'] = 2; days['Tuesday'] = 3; days['Wednesday'] = 4; days['Thursday'] = 5; days['Friday'] = 6; days['Saterday'] = 7; }
Now to fetch the values at any point of time, we can fetch as per the code given below. Here I have made a function to alert some data. It can be as
function ShowDays() { alert(days['Sunday']); alert(days['Thursday']); alert(days['Saterday']); }
It will show three alerts, first 1 then 5 and lastly 7.
So we can store some global data in our page. And this data we can access, at different events, we require.
Similarly we can store objects in the dictionary in same way. Let’s see the code
function CreateDictionarywithObject() { var objDictionary = new Array(); // Creating a dictionary which is holding five objects for (var i = 0; i < 5; i++) { var obj= new myClass(); obj.member1 = 'member1data' + i; obj.member2 = 'member2data' + i; obj.member3 = 'member3data' + i; objDictionary['Obj' + i] = obj; } //Fetching third Object var fetchedObj = objDictionary['Obj3']; alert(fetchedObj.member1); alert(fetchedObj.member2); alert(fetchedObj.member3); }
Now, one more thing if you want to pass the data from server to client as a JSON data, you can serialize a C# dictionary at server side, and again when you will desterilize at client side you will be getting the dictionary as we discussed above. Let’s see the magic.
Here I have made one class Employee as
public class Employee { public int Id { get; set; } public string Name { get; set; } public decimal Salary { get; set; } public int Age { get; set; } }
Now, on the page load, I created a dictionary with some data, like below
List<Employee> employees= new List<Employee>() { new Employee{ Id=1000, Name="Brij", Age=27, Salary=800000}, new Employee {Id=1001, Name = "Rahul", Age=28,Salary=500000}, new Employee {Id=1002, Name = "Anoop", Age= 29 ,Salary = 60000} }; Dictionary<string, Employee> employeeData = employees.ToDictionary(em => em.Id.ToString(), emp => emp);
Now serialize the data using JavaScriptSerializer and assigned it in a hidden variable
JavaScriptSerializer ser = new JavaScriptSerializer(); hfData.Value = ser.Serialize(employeeData);
Now I have a textbox and a button to show employee details. My aspx code looks like this
<body> <form id="form1" runat="server"> <div> <span>Id: </span> <input id="idName" type="text" /><br /> <input id="Button2" type="button" value="Displaydetail" onclick="show();"/> <asp:HiddenField ID="hfData" runat="server" /> </div> </form> </body>
Here I will be entering the Id of the employee, and on clicking the button “Show details”, I am displaying the data as JavaScript alerts. So let’s see the JavaScript code
function parseEmployeeData() { //for parsing the data employees = JSON.parse(document.getElementById("<%= hfData.ClientID%>").value); } function show() { parseEmployeeData(); var key = document.getElementById('idName').value; var emp = employees[key]; if (typeof (emp) != 'undefined') { // If key is found then dispaly the details alert(emp.Name); alert(emp.Age); alert(emp.Salary); } else { // key not found alert('No data found'); } }
As you can see, first I am parsing the data using JSON, and then finding the value in the dictionary using some key and displaying the details as a JavaScript alert.
This sample is just for an example, to show how we can use JavaScript dictionary in our daily life.
Here, I have used namespace System.Web.Script.Serialization for serializing the data at C#. Also, I have included JSON JavaScript file in my application to parse the data at Client Side.
Happy Client Scripting
Thanks,
Brij
THNKS BRIJ JI. I DIDN’T KNOW ABOUT “Javascript Dictionary”.
Yes. This is a very good feature of JavaScript and very useful at sometime
Hey…its nt a compliment for this single article..I really appreciate your contribution towards Dot net folks…thanks for your valuable time in sharing your knowledge with us..keep rocking…gud luck 🙂
Thanks a lot Gayatri. Glad to know that you find my posts useful.
Hi Brij,
thanks for this but i have problem in the Employee can you send me the project
I’ll check the sample that I made and will try to post it. But will prefer if you post the problem you are facing
it’s smart function which i need .but where can download the full sample ?
I don’t think I attached here the sample but the post itself is quite descriptive and code snippet is added wherever required. Do let me know if you face any specific issue?