2014-06-10 1 views
1

Voici l'idée: l'utilisateur peut ajouter des éléments et ils peuplent dans un contrôle de liste. Si l'utilisateur n'a aucun élément, il ne devrait pas être en mesure de soumettre le formulaire. Cependant, ajouter un élément artificiel quand il n'y a pas d'articles en utilisant:Pourquoi le compte n'est pas précis?

if (ds.Tables[0].Rows.Count == 0) 
{ 
    lstItems.Items.Insert(0, "No items have been added."); 
} 
else 
{ 
    lstItems.DataSource = ds; 
    lstItems.DataTextField = "ItemInfo"; 
    lstItems.DataValueField = "Item_ID"; 
    lstItems.DataBind(); 
} 

Plus tard, je veux assurer qu'il ya des éléments avant de soumettre, mais le DataSet (ds) n'est pas disponible dans cette fonction/contexte. Pour résoudre ce problème, je déclarais une variable globale (public int) au sein de la classe qui pourrait être référencé:

public int numItems = 0; 

Définissez ensuite comme si:

numItems = ds.Tables[0].Rows.Count; 

De cette façon, il ne serait pas décontenancer par le seul enregistrement artificiel que j'ai inséré dans lstItems. Cependant, cela ne fonctionne pas. La valeur reste 0, même si l'instruction conditionnelle ci-dessus évalue correctement indiquant que le nombre de lignes est et non 0. Que fais-je de mal? Existe-t-il une meilleure façon de le faire? Je considérais à l'aide:

if (lstItems.Items.Count < 1) 
{ 
    // allow submission 
} 

Mais le problème est qu'il frappe de mon article artificiel:

lstItems.Items.Insert(0, "No items have been added."); 

Alors, quelle est la meilleure façon de vérifier s'il y a des éléments créés par l'utilisateur dans le liste?

+0

à quel événement de page cela se produit-il? – ps2goat

+0

@ ps2goat il se produit dans une méthode pour remplir les éléments, qui est appelée dans page_load après avoir vérifié que la page n'est pas une publication. – Dan

Répondre

2

numItems est initialisées à 0 sur postbacks vous ne serez pas en mesure d'obtenir la valeur en cliquage ...

utiliser quelque chose comme ça

ViewState["count"] = ds.Tables[0].Rows.Count; 

et vérifiez le compte sur le bouton clic

if(Convert.ToInt32(ViewState["count"]) > 0) 
{ 
// your logic 
} 
+0

Cela a fonctionné, merci! – Dan

0

Lorsque l'utilisateur ajoute un élément, supprimez votre élément par défaut de la liste. Ensuite, au lieu de baser la validation sur le nombre d'éléments utilisant un global, vous pouvez ensuite vous baser sur l'existence ou non de votre élément artificiel dans la liste.

+0

Je le supprime déjà de la liste quand il ajoute des éléments, mais je n'arrive pas à voir si c'est le seul. – Dan

+0

Peu importe si c'est le seul là-bas, il importe seulement qu'il soit là du tout. Si c'est le cas, ils n'ont ajouté aucun élément et échouent la validation, si ce n'est pas le cas, ils ont ajouté un élément et réussi la validation. – MIke

+0

Je comprends, mais je ne sais pas comment vérifier cela. Un exemple de code serait utile. – Dan

Questions connexes