This is a frequent requirement for an ASP.NET developer to pass a server side array to client side and access them through JavaScript. There are several ways to do that. But here I am describing one of the simplest steps to pass server side array to client side. In this blog post, you will get to know two things, the first one is how to pass the array from server side to client side and the second one is how to bind that array to an empty “html dropdown” list.
Well, the easiest way to pass the server side array to a client side is by using “RegisterArrayDeclaration
”. RegisterArrayDeclaration
method registers a JavaScript array with the System.Web.UI.Page
object. As the array object is registered with the “Page
" object, we can access it from JavaScript easily. RegisterArrayDeclaration
takes array name and value of the array element as arguments.
In the below example, I have registered one array with the name of “Skills
”.
protected void Page_Load(object sender, EventArgs e)
{
Page.ClientScript.RegisterArrayDeclaration("Skills", "'C#'");
Page.ClientScript.RegisterArrayDeclaration("Skills", "'VB.NET'");
Page.ClientScript.RegisterArrayDeclaration("Skills", "'C'");
Page.ClientScript.RegisterArrayDeclaration("Skills", "'C++'");
}
Now, what does the above declaration do? This is nothing but a declaration of a JavaScript array like:
Var Skills = new Array('C#', 'VB.NET','C','C++');
This “Skills
” array is now only a JavaScript array which is easily accessible by client side code. Now let’s take a look at how to access them and how to bind them in a dropdown list.
In my form, I have an HTML select
element and one HTML Button
. I want my server side (which is now a client side) array to bind in the dropdown list.
<select id="ddlNames" name="D1">
</select><input id="BtnNameLoad" type="button"
value="Load Name" onclick="return BtnNameLoad_onclick()" />
Below is the code snippet for binding the array to HTML control:
function BtnNameLoad_onclick() {
var listID = document.getElementById("ddlNames");
if (listID != null) {
for (var i = 0; i < Skills.length; i++) {
var opt = document.createElement("option");
listID.options.add(opt);
opt.text = Skills[i];
}
}
}
In the above code snippet, I have read the skills name using Skills[i]
which was actually registered from server side. Another interesting thing is to bind the array elements in “Select
” item. As we all know, “Option
” tag element is the placeholder for the select
content. So I have created one “Option
” element using “createElement
”.
var opt = document.createElement("option");
This opt
object is nothing but the placeholder for item of this “Select
” element. So for every element, I have created an object for “option
” element and added them into the actual list by reading the value from array.
You can also check the array elements that are registered through debugging:
Below is the sample output:
If you have any questions regarding this, please post your question in the comments section or use the contact us page to contact me.
Filed under: ASP.NET, C#