2010-02-08 12 views
0

Dans un datalist, vous extrayez généralement des données de ligne avec un FindControl sur un contrôle auquel une valeur est affectée via une base de données en utilisant say, Eval.Datalist - Aucune base de données au contrôle serveur, extrait possible?

Que se passe-t-il si dans votre datalist, il n'y a pas de liaison à un contrôle serveur ASP.NET? C'est dans un datalist, "tout droit", disons une cellule de table ou tout seul.

Vous ne pouvez pas faire un FindControl, est-il possible d'extraire une valeur de ligne si elle n'est pas liée et pas une clé de données?

Répondre

1

Si votre valeur est dans un DataList, vous pouvez toujours FindControl, pourvu qu'il est à l'intérieur d'un contrôle marqué par runat="server":

<asp:Literal id="ltFixedValue" runat="server">5</asp:Literal> 

ou même

<span id="spFixedValue" runat="server">5</span> 
+0

Je voulais rester loin de littérale, mais je pense que je n'ai pas le choix. Peut-être que span sera peut-être un peu mieux. – Steve

1

Je suppose qu'il y a des données liées à votre datalist (parce que c'est le rendu d'un modèle d'élément). Je voudrais utiliser quelque chose comme ceci dans le cas OnItemDataBound du datalist:

if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) { myobject obj = (myobject) e.Item.DataItem; }

Une fois que vous avez lancé la dataitem, vous pouvez extraire la valeur dont vous avez besoin.

+0

Je suis effectivement mise en données dans cet événement et que vous souhaitez obtenir des données via un bouton, cliquez sur. Je suppose que je pourrais enregistrer les données dans cet événement dans viewstate, mais j'aurais 2 copies des mêmes données. Je ne pense pas que je puisse éviter d'utiliser le serveur runat. – Steve

+0

Je pense que vous voudrez peut-être câbler les données dont vous avez besoin capturé dans l'argument de commande du bouton cible - puis la valeur est disponible dans la méthode OnClick que vous avez créé. – FiveTools