views:

76

answers:

2

Hi How Can i fill an array that defined in javascript with c# in behind code?

EDIT:

here is my code

protected void Page_Load(object sender, System.EventArgs e)
{
string[] locations = new string[] {
    "Las Vegas",
    "Los Angeles",
    "Tampa",
    "New York",
    "s",
    "sss"
};
string jsArray = GetJSArrayForVBArray(locations);
this.ClientScript.RegisterArrayDeclaration("usernames", jsArray);
}

private string GetJSArrayForVBArray(string[] vbArray)
{
StringBuilder myResult = new StringBuilder();
foreach (string item in Constants.vbArray) {
    {
        myResult.Append(",'" + item + "'");
    }
}
if ((myResult.Length > 0)) {
    return myResult.ToString().Substring(1);
} else {
    return "";
}
}

Javsacript:

<script type="text/javascript">
    $(function () {
        var usernames = new Array();
        $("#tags").autocomplete({
            source: usernames
        });
    });
</script>
+3  A: 

Sounds like a job for JSON. Note that if you scroll down on that page you'll see a number of resources for utilizing JSON in C#. It's really a great way to transfer data back and forth between various platforms/languages.

JGB146
thanks.you mean i have to convert my .NET array to json?
shaahin
Well, check out the links listed on that page. Most of the work for 'converting' is done for you by one of those packages, depending on your implementation. Specifically, it becomes a matter of basically calling JsonEncode/JsonDecode (or using helper functions to work with specific collection types) with the code at: http://techblog.procurios.nl/k/618/news/view/14605/14863/How-do-I-write-my-own-parser-for-JSON.html
JGB146
+4  A: 

use the JavaScriptSerializer class. Something like the following should do it

protected void Page_Load(object sender, System.EventArgs e)
{
    string[] locations = new string[] {
        "Las Vegas",
        "Los Angeles",
        "Tampa",
        "New York",
        "s",
        "sss"
    };

    JavaScriptSerializer serializer = new JavaScriptSerializer();

    string jsArray = serializer.Serialize(locations);
    this.ClientScript.RegisterClientScriptBlock(this.GetType(), "locations", jsArray, true);
}
Russ Cam
thanks.which method?would you please give me an example?
shaahin
Thanks a lot.how can i use it in my aspx page?
shaahin
I cant use array in aspx page.please help me.i used this code.<script type="text/javascript"> $(function () { var locations= new Array(); $("#tags").autocomplete({ source: locations }); });</script>
shaahin
@shaahin - what doe my code output to the page? There's no need to declare a new JavaScript array to hold the values that we are outputting from the server side, we just need to assign what we output to a variable and then assign that variable value to the source property of the object that you're passing to autocomplete
Russ Cam
Alternatively, you could write the result of calling serialize straight into the aspx markup, using `<%= ... %>` tags
Russ Cam
thanks thanks and thanks for helping novice programmer.
shaahin