2010-09-29 4 views
2

J'utilise DataGrid et j'ai un <asp:TemplateField> j'ai passé quelques paramètres dans ce code est le suivant:VB.NET QueryString

<asp:TemplateField HeaderText="Download"> 
    <ItemTemplate> 
     <asp:LinkButton ID="lnkname" runat="server" Text="Download" PostBackUrl='<%#"~/logout.aspx?ID="+Eval("ID")+"&category=mobile"%>'></asp:LinkButton> 
    </ItemTemplate> 
</asp:TemplateField> 

J'ai champ numérique (ID) que je dois envoyer par URL J'ai essayé d'envoyer les données de type string et son travail bien, mais alors que je vous envoie type numérique (ID) Je suis confronté à cette erreur

Conversion de chaîne « ~/logout.aspx? ID = » taper " Double 'n'est pas valide

Je sais quelque chose que j'ai besoin de changer dans la syntaxe près de Eval("ID"). Comment dois-je envoyer des données numériques dans la chaîne de requête?

Merci

Répondre

3
<asp:TemplateField HeaderText="Download"> 
       <ItemTemplate> 
       <asp:LinkButton ID="lnkname" runat="server" Text="Download" PostBackUrl='<%# String.Format("~/logout.aspx?ID={0}&category=mobile", Eval("ID")) %>'></asp:LinkButton> 
       </ItemTemplate> 
       </asp:TemplateField> 
+0

Merci Il fonctionne très bien ..... –

+0

Pas de problème. Je pense que le problème était que la fonction Eval() ne génère pas de chaîne. Vous essayiez d'ajouter une chaîne et cette valeur ensemble provoquant une erreur. Je pense qu'une autre solution a pu être de mettre Eval ("ID"). ToString() mais je pense que String.Format() semble beaucoup plus propre :) – Curt

2

La syntaxe <%# doivent simplement être utilisés pour évaluer un élément de données spécifique. Vous essayez de créer la chaîne entière dans le <%# ce qui n'est pas nécessaire puisque la plupart des données sont statiques.

Juste une intuition pourquoi vous obtenez l'erreur dans le scénario spécifique ID est parce que vous avez tout l'article string et double informations dans votre fixation <%# il utilise le type de déclaration Eval pour comprendre ce que l'ensemble section devrait être. Dans votre cas, il regarde la valeur de Eval("ID") et sait qu'il s'agit d'un double et il s'attend alors à ce que le résultat lié soit double. Le problème est votre concaténant le string et le double de sorte que veuille renvoyer un string qui n'est pas valide en fonction du type attendu du Eval. Lorsque vos données sont envoyées au querystring, il s'agit d'un string. Lorsque vous l'annulez à l'aide de l'objet QueryString, il renvoie également une chaîne. Pouvez-vous poster votre code qui analyse le querystring?

Si votre code ne vérifie pas une valeur vide ou fait un TryParse alors vous pourriez avoir des erreurs. Gardez à l'esprit que tout le monde peut manipuler ces données, donc vous devriez vérifier qu'il est du bon type.

Par exemple:

Dim yourValue As Double = 0 
If Double.TryParse(Request.QueryString("id"), yourValue) = False Then 
    ShowError("Invalid id supplied.") 
    Return 
End If