2009-03-06 7 views
0

Je travaille à la création d'une liste dynamique de listes de contrôle et à la mise en œuvre ci-dessous. Cela fait maintenant une semaine que j'essaie d'obtenir les valeurs de texte fnameID sur le bouton submit pour envoyer les valeurs dans la base de données. Je ne veux pas utiliser la fonction de publication "oncheckedchanged.on" pour chaque vérification, car la liste de contrôle contient plus de 1000 lignes et chaque publication/rechargement gaspille trop de ressources. Je veux juste être en mesure d'utiliser une méthode pour être en mesure de saisir les valeurs vérifiées afin que je puisse les insérer dans la base de données sur le bouton de soumission "Click Me!" Cliquez sur.Problèmes de soumission de valeurs de cases à cocher dynamiques

J'ai recherché et trouvé la méthode FindControl mais je n'arrive toujours pas à saisir les valeurs fnameID. Je reçois soit un indéfini ou des erreurs sur moi. Toute aide serait grandement appréciée! Merci!

ASPX:

<div id="aGAccountabilityCheckListBox"> 
    "Panel1" runat="server"> 

<asp:LinkButton ID="LinkButton1" Width="66px" runat="server" onclick="LinkButton1_Click"> 
    Click Me! 
</asp:LinkButton> 
Code

derrière:

protected void Page_Load(object sender, EventArgs e) 
{ 
    for (int i = 0; i < 50; i++) 
    { 
     CheckBox _checkbox = new CheckBox(); 
     _checkbox.ID = "dynamicCheckListBox" + Convert.ToString(i); 

     Panel1.Controls.Add(_checkbox); 
     Panel1.Controls.Add("&nbsp; <span id='fnameID" + i + "' >test" + i + "&lt;/span>"); 
    } 
} 


protected void LinkButton1_Click(object sender, EventArgs e) 
{ 

    SqlConnection cn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["cnDatabase"].ToString()); 
    SqlCommand cmd = new SqlCommand("usp_CreateUser", cn); 

    cmd.CommandType = CommandType.StoredProcedure; 

    cn.Open(); 
    cmd.ExecuteNonQuery(); 
    cn.Close(); 

} 

Merci!

Répondre

3

L'état est restauré sur les contrôles avant l'événement de chargement s'exécute. Si vos contrôles n'existent pas déjà, ils perdront leur état et vous ne saurez pas qu'ils ont été vérifiés. Créez vos cases à cocher dans l'événement Init ou PreInit à la place.

0

déplacer la création de cases à cocher à la méthode de la page CreateChildControls

pour récupérer l'état de case à cocher dans le gestionnaire LinkButton1_Click vous pouvez utiliser le code suivant

for (int i = 0; i < 50; i++) 
    { 
     string cbxId = string.Format("dynamicCheckListBox{0}", i); 
     CheckBox _checkbox = Panel1.FindControl(cbxId) as CheckBox; 
     if (_checkbox == null) 
      continue; 

     if (_checkbox.Checked) 
      //do something 
    } 
0

Votre fnameID de sont portées créées comme un contrôle littéral. Il n'y a pas de retour de valeur que vous obtiendrez si vous le configurez de cette façon. C'est juste du HTML ou du texte arbitraire du point de vue asp.net. Pourquoi n'utilisez-vous pas la propriété Text de CheckBox?

+0

Parce que pour simplifier l'affichage de mon code j'ai coupé trois contrôles html de ce contrôle littéral. Il doit exister au lieu d'utiliser la propriété Text pour CheckBox. Merci –

Questions connexes