2011-07-12 3 views
0

Je tente de définir le paramètre d'une commande insert à la valeur d'une zone de texte contenue dans un contrôle DataList @ Ce qui suit est ma tentative de trouver le contrôle pertinent et de récupérer sa valeur.Obtention de la valeur de Textbox contenue dans DataList: Où est-ce que je me suis trompé?

protected void SqlDataSource1_Inserting(object sender, SqlDataSourceCommandEventArgs e) 
{ 
    TextBox Amt = (TextBox)DataList1.Items[0].FindControl("RadTextBox1"); 
    e.Command.Parameters["@Amount"].Value = Convert.ToDecimal(Amt.Text); 
    } 

L'exemple de code ci-dessus ne fonctionne pas mais ne renvoie aucune erreur de syntaxe. Je suppose que j'ai fait quelque chose de mal en essayant d'obtenir la valeur de la zone de texte parce que l'instruction d'insertion fonctionne très bien si je place le paramètre @Amount à une valeur arbitraire. Quelqu'un peut-il me montrer s'il vous plaît mon erreur et comment le corriger?

// Code additionnel par commentaire

DataList:

<asp:DataList ID="DataList1" runat="server" DataSourceID="SqlDataSource1"><ItemTemplate> 

     <telerik:RadTextBox ID="RadTextBox1" runat="server" Text='<%# Eval("TotalProratedAmountDue") %>'> 
     </telerik:RadTextBox> 
     </ItemTemplate> 
    </asp:DataList> 

Bouton Insérer:

public void RadButton2_Click(object sender, EventArgs e) 
{ 
    SqlDataSource1.Insert(); 
} 
+0

Pouvez-vous s'il vous plaît envoyer votre code complet? –

+0

Veuillez voir ci-dessus – hughesdan

Répondre

0

Peut-être parce que vous êtes à la recherche pour RadTextBox1 mais l'ID est RadTextBox2? Si Amt.Text renvoie une valeur NULL, alors Convert.ToDecimal (Amt.Text) retournera un 0. Mais je ne suis pas sûr de ce que vous voulez dire par "l'exemple ci-dessus ne fonctionne pas". Vous voulez dire qu'aucun enregistrement n'est inséré?

+0

Le problème est qu'aucun enregistrement n'est inséré. En outre, la référence à RadTextBox2 était une erreur de pâte de copie. Le code DataList correct apparaît maintenant au-dessus. – hughesdan

+0

Nous utilisons également les contrôles Telerik. Je ne pense pas que vous pouvez convertir un RadTextBox à un TextBox. (c'est-à-dire var b = ((TextBox) new RadTextBox()); Comme FindControl renvoie un contrôle générique, c'est peut-être pourquoi vous n'obtenez pas d'erreur lorsque vous construisez, je ne suis pas sûr ... –

+0

Merci! C'était le problème. Si je change TextBox en RadTextBox cela fonctionne correctement. Je vais accepter votre réponse ci-dessus. – hughesdan

0

Eh bien pour commencer - votre code fait référence RadTextBox1 encore dans votre balisage son RadTextBox2

+0

Désolé, j'ai collé le mauvais datalist ci-dessus. Fixé maintenant – hughesdan

Questions connexes