2014-09-16 4 views
2

Je n'ai pas utilisé les cases à cocher avant et j'ai besoin d'aide. J'ai une page asp/html classique. J'ai un nombre inconnu de personnes et il y a 3 cases à cocher pour chaque personne. L'utilisateur doit cocher certaines cases en fonction des informations affichées sur la page. Je dois définir certaines valeurs sur la même page en fonction des cases cochées. J'ai essayé plusieurs façons et n'ai pas eu de chance.classic asp case à cocher état comme case à cocher

Il y a une boucle qui affiche chaque nom de personnes et ces trois cases à cocher: <td align="center"><input type="checkbox" id="chkden" name="chkden" onclick="chkden();" value=<%=strempdental%>/></td> <td align="center"><input type="checkbox" id="chkort" name="chkort" onclick="chkort();" value=<%=strOrtPlan%>/></td>
<td align="center"><input type="checkbox" id="chkvis" name="chkvis" onclick="chkvis();" value=<%=strempvision%>/></td>

est le javascript Ici, j'ai en haut de la page. Aucune des options affichées pour le travail Javascript.

function chkden() 
{ 
streesubden.value = checkbox.checked ? strempdental.value : ''; 
} 
function chkort() 
{ 
    if(document.getElementById('chkort').checked) 
     streesubort.value = strortplan :''; 
} 
function chkvis() 
{ 
    if(document.getElementById('chkvis').checked) 
     streesubvis.value = strempvision :''; 
} 

Par exemple, si "chkden" est coché, je dois définir streesubden = strempdental. Si ce n'est pas vérifié, alors Streesubden sera vide. Je dois faire ceci avant que je soumette à la table de SQL.

+0

S'il y a un nombre inconnu de personnes sont là plusieurs instances de la même case? Si oui, alors vous devez vous référer à eux dans un tableau ... si vous confirmez que je posterai répondre à la façon de se référer et de définir des tableaux comme celui-ci. – allski

Répondre

0

Probablement la meilleure façon est de générer automatiquement les cases à cocher en utilisant ASP classique et utilisez l'élément ID de données que la différenciation entre eux, comme si ...

<% 
Dim data, row 
Const C_COL_RECORD_ID = 0 
Const C_COL_NAME = 1 
data = GetDataSetAsArray() 'Just used as an arbitrary method for recovering the data. 

For row = 0 to UBound(data, 2) 'Loop through the array rows. 
    %> 
    <input type="checkbox" id="chkYes<%=data(C_COL_RECORD_ID, row)%>" name="chkYes<%=data(C_COL_RECORD_ID, row)%>" /> 
    <input type="checkbox" id="chkNo<%=data(C_COL_RECORD_ID, row)%>" name="chkNo<%=data(C_COL_RECORD_ID, row)%>" /> 
    <input type="checkbox" id="chkMaybe<%=data(C_COL_RECORD_ID, row)%>" name="chkMaybe<%=data(C_COL_RECORD_ID, row)%>" /> 
    <label><%=data(C_COL_NAME, row)%> <!-- Write the name to the page --></label> 
<% 
Next 'row 
%> 

Notez que ceci est un très rapide et moyen facile de le faire. Si vous avez besoin de plus d'informations à partir de vos données, vous devrez le trier.

Quand il s'agit de travailler avec les cases à cocher, ils seront nommés et numérotés à l'ID d'enregistrement de la personne, comme si ...

chkYes1, chkNo1, chkMaybe1

chkYes2, chkNo2, chkMaybe2

...

chkYes[n], chkNo[n], chkMaybe[n]

Évidemment, cela va dépendre de votre ids record, alors ils peuvent ne pas être aussi sériels que je l'ai démontré ci-dessus.

- EDIT -

En fait, cela va de pair avec un poste que je viens de faire. Take a look here et copiez la fonction GetPostData(). Tirer le dos de l'information sera quelque chose comme ceci:

Dim checkValue 
checkValue = GetPostData("chkMaybe" & personId, "") <> "" 

Le checkValue contiendra soit true ou false.

Évidemment, vous pouvez étendre ceci pour recharger tous les personId et les faire défiler pour extraire les différentes valeurs de case à cocher.

--EDIT--

Les name et id attributs vraiment besoin d'un préfixe pour être clair quant à leur intention (si vous n'assignant l'ID d'enregistrement alors chaque contrôle aura un ID en double la même rangée visuelle). Deuxièmement, <%= %> est utilisé pour (Response.) écrire des valeurs sur la page. Par conséquent, quelque chose comme:

<input type="text" id="txtName<%=data(C_COL_RECD_ID, row)%>" name="txtName<%=data(C_COL_RECD_ID, row)%>" /> 

Conviendrait - remarquez le txtName juste avant la <%=data(C_COL_RECD_ID, row)%>.De même, si vous faisiez référence à une case à cocher, vous pouvez utiliser les éléments suivants:

<input type="checkbox" id="chkYes<%=data(C_COL_RECORD_ID, row)%>" name="chkYes<%=data(C_COL_RECORD_ID, row)%>" /> 

PS: Si cela peut aider, je l'ai posté un morceau de code in another thread qui va lire les données à partir d'une base de données, étant donné les chaînes SQL et de connexion et renvoyer les données dans un tableau. Il piège et signale également les erreurs - peut être utile.

Pour l'utiliser:

Dim sql, conn, data 
sql = "SELECT * FROM myTable" 
conn = "MyDbConnection;whatever" 
Data = GetDataSet(sql, conn) 

Puis erreur poignée ...

If Data(0, 0) = C_ERROR Then 
    'Handle error... 
    Response.Write(Data(C_COL_ERROR_ID, 0) & "<br />" & Data(C_COL_ERROR_MESSAGE, 0) & "<br />") 
End If 
+0

@amiel: Découvrez la modification. – Paul

+0

Merci Paul. Je vais essayer. Alski - Oui, il y aura plusieurs personnes, toutes avec ces trois cases à cocher. – amiel

+0

Paul - si je comprends bien, C_COL_RECORD_ID est chkden, chkort, chkvis (dans mon exemple) et C_COL_NAME_ID est le numéro d'identification des personnes? – amiel