2012-12-06 5 views
0

J'ajoute dynamiquement un contrôle multiselect sur une page jQuery comme ceci:jQuery document.ready lance erreur

var captionCell = new HtmlTableCell { InnerHtml = control.Caption }; 
var inputCell = new HtmlTableCell(); 
inputCell.Controls.Add(inputControl); 
var row = new HtmlTableRow(); 
row.Cells.Add(captionCell); 
row.Cells.Add(inputCell); 
tbl.Rows.Add(row); 

Et la construction de ma chaîne javascript comme ceci:

StringBuilder sb = new StringBuilder(); 
sb.AppendLine("<script type=\"text/javascript\">"); 
sb.AppendLine("var $callback = $(\"#callback\");"); 
sb.AppendLine("$(document).ready(function() {"); 
sb.Append("$(\"#"); 
sb.Append(multiSelectControl.ClientID); 
sb.AppendLine("\").multiselect("); 
sb.AppendLine("{"); 
sb.AppendLine("show: \"fade\","); 
sb.AppendLine("hide: \"fade\","); 
sb.AppendLine("click: function (event, ui){"); 
sb.AppendLine("$callback.text(ui.text + ' ' + (ui.checked ? 'checked' : 'unchecked'));"); 
sb.AppendLine("},"); 
sb.AppendLine("});"); 
sb.AppendLine("});"); 
sb.AppendLine("</script>"); 

en ajoutant ensuite le script la page comme ceci:

ScriptManager.RegisterClientScriptBlock(this.Page, Page.GetType(), "CreateControl" + inputControl.ClientID, 
          sb.ToString(), false); 

Mais en obtenant l'erreur suivante en essayant de faire ceci:

Microsoft JScript runtime error: Object doesn't support this property or method

S'il vous plaît aider les gars.

Merci d'avance.

enter image description here

+1

il semble que vous n'avez pas ajouté la référence de bibliothèque jquery – Rab

+1

sb.AppendLine ("},"); il semble une virgule supplémentaire ici ... – Anujith

+0

Vérifiez dans la console où exactement l'erreur se produit .. –

Répondre

0

Je résolu ce problème en créant un contrôle utilisateur, et quand je dois utiliser le script ci-dessus je viens chargé le contrôle de l'utilisateur.

Résolu tout et fonctionne très bien.

1

Vous devez avoir jQuery inclus dans la page à utiliser document.ready, vous n'avez pas ajouté la balise de script pour inclure jquery dans la page, Ajouter balise de script pour inclure jquery.

<script type="text/javascript" src="/jQueryFolder/jquery.js"></script> 
+0

j'ai fait dans l'événement Page_Load comme suit: ScriptManager.RegisterClientScriptInclude (this.Page, Page.GetType(), "1", "../../Scripts/jquery/jquery.multiselect.js"); ScriptManager.RegisterClientScriptInclude (this.Page, Page.GetType(), "2", "../../Scripts/jquery/jquery.ui.js"); ScriptManager.RegisterClientScriptInclude (this.Page, Page.GetType(), "3", "../../Scripts/jquery/jquery.latest.js"); – johnnie

+1

@johnnie charge jquery.latest d'abord, puis jquery ui, puis tout le reste. –

+0

Vous pouvez simplement utiliser des balises de script au lieu d'utiliser RegisterClientScriptInclude si vous ne décidez pas des éléments à inclure lors de l'exécution. – Adil

0
var $callback = $("#callback"); 
$(document).ready(function() { 
    $("#ClientID").multiselect({ 
    show: "fade", 
    hide: "fade", 
    click: function(event, ui) { 
     $callback.text(ui.text + ' ' + (ui.checked ? 'checked' : 'unchecked')); 
    } 
}); 
});​ 
+0

Toujours la même erreur avec le javascript. – johnnie