J'essaie de passer un tableau C # à la fonction JQuery en tant que paramètre.

Mon code C # pour appeler la fonction est:

//Create an Array from filtered DataTable Column
    var GatepassIDs = defaultView.ToTable().AsEnumerable().Select(r => r.Field<string>("GatePassID")).ToArray<string>(); 


  //Pass Array to JQuery function                 
                Page.ClientScript.RegisterStartupScript(this.GetType(), "CallMyFunction", "<script type='text/javascript' >FillGatePassIDSmartBox("+GatepassIDs+");</script>", false);

Script Jquery:

<script type="text/javascript" >
function FillGatePassIDSmartBox(GatepassIDs) {        

        $('#<%=txt_gatepassID.ClientID%>').autocomplete({
            source: GatepassIDs
    });
}
</script>

Le problème est qu'il passe System.String [] à partir d'un appel C # au lieu de passer des valeurs Array.

Veuillez aider

0
Alina Anjum 20 juin 2019 à 09:47

3 réponses

Meilleure réponse

Au lieu de passer votre tableau en tant que paramètre directement à partir de C #, envoyez votre tableau en tant que variable à votre JavaScript. Ensuite, vous pouvez l'envoyer en tant que paramètre à votre fonction:

  var GatepassIDs = defaultView.ToTable().AsEnumerable().Select(r => r.Field<string>("GatePassID")).ToArray<string>();

  StringBuilder sb = new StringBuilder();
  sb.Append("<script>");
  sb.Append("var yourGatePassIDArray= new Array;");
  foreach(string str in GatepassIDs)
  {
    sb.Append("yourGatePassIDArray.push('" + str + "');");
  }
 sb.Append("FillGatePassIDSmartBox(yourGatePassIDArray)");
  sb.Append("</script>");

  Page.ClientScript.RegisterStartupScript(this.GetType(), "CallMyFunction", sb.ToString());

Et puis utilisez ceci dans votre JavaScript comme:

function FillGatePassIDSmartBox(yourGatePassIDArray) {        

        $('#<%=txt_gatepassID.ClientID%>').autocomplete({
            source: yourGatePassIDArray
    });

Vous devrez déclarer votre tableau dans un contexte global.

2
Alina Anjum 20 juin 2019 à 11:31

Je recommanderais ceci.

Var jarr = JsonConvert.SerializeObject (GatepassIDs);

Page.ClientScript.RegisterStartupScript (this.GetType (), "CallMyFunction", "FillGatePassIDSmartBox (" + jarr + ");", false);

0
Ajay Kumar Kaushal 20 juin 2019 à 07:07

Je recommanderais d'utiliser le package Newtonsoft.Json NuGet, car cela rend la gestion de JSON triviale. Vous pouvez effectuer les opérations suivantes:

var jsonArray = JsonConvert.SerializeObject(GatepassIDs);
Page.ClientScript.RegisterStartupScript(this.GetType(), "CallMyFunction", "<script type='text/javascript' >FillGatePassIDSmartBox("+ jsonArray +");</script>", false);
0
Abdul Muheet Shaikh 20 juin 2019 à 06:53