2011-07-04 2 views
1

J'utilise la pagination qui utilise une procédure stockée pour filtrer par lettre. Je dois enregistrer les valeurs des cases à cocher lorsque je soumets le formulaire comme je filtre par lettre. J'ai eu un previous question semblable à ceci qui a fonctionné grand mais je veux pouvoir garder ma procédure stockée.Recherche et enregistrement des valeurs des cases à cocher

procédure stockée:

ALTER PROCEDURE [dbo].[A_Page_Paging] 
@selected_Char char(1) = null, 
@permissionID int = null 
as 
if @permissionID = '' 
    if @selected_Char = '#' 
      select * from A_Page where P_Description like '[^a-z]%' 
    else if @selected_Char = '!' 
      select * from A_Page 
      order by P_Description 
    else 
      select * from A_Page where P_Description like @selected_Char + '%' 
else 
    select P_PageID, P_Name, P_Description from A_Permission 
    inner join L_PagePermission 
    on P_PermissionID = PP_PermissionID 
    inner join A_Page 
    on P_PageID = PP_PageID 
    where P_PermissionID = @permissionID 
    order by P_Name 

boutons Paging:

<input id="buttonStyle" type="submit" name="Paging_Button" value="#"> 
<% for i = 97 to 122 %> 
    <input id="buttonStyle" type="submit" name="Paging_Button" value="<%=CHR(i) %>">&nbsp; 
<% next %> 
<input id="buttonStyle" type="submit" name="Paging_Button" value="All"> 

fonction pour enregistrer des cases à cocher et case à cocher (la fonction ne fonctionne que par exemple si je sélectionne une case à cocher avec la valeur commençant par A puis filtre par A la case à cocher montrera, si je filtre par B il ne sera pas):

'Checkbox check 
     Function CheckedByUser(id) 
      Dim x 
      CheckedByUser = "checked=""checked""" 
      For x=1 To Request.Form("selectedRecord").Count 
       If Trim(Request.Form("selectedRecord").Item(x)) = Trim(id) Then 
        Exit Function 
       End If 
      Next 
      CheckedByUser = "" 
     End Function 

<input type="checkbox" name="selectedRecord" value="<%=objRS("P_PageID")%>" <%=CheckedByUser(objRS("P_PageID")) %>> 

Réponse précédente pour corriger problème de pagination mais me demande de changer ma procédure stockée que je préfère ne pas faire:

<% 
Do Until objRS.EOF 
    Response.Write("<input type=""checkbox"" name=""selectedRecord"" value=""" & objRS("Id") & """ " & WasCheckedByUser(objRS("Id"))) 
    If Len(Request.Form("Page"))=1 And Trim(Left(objRS("Id"), 1))<>Trim(Request.Form("Page")) Then 
     Response.Write(" style=""display: none;""") 
    End If 
    Response.Write(" />") 
    objRS.MoveNext 
Loop 
%> 

exécution procédure stockée

connectionstring = obj_ADO.getconnectionstring 
Set objCon = CreateObject("ADODB.Connection") 
Set objRS = CreateObject("ADODB.Recordset") 
set objComm = CreateObject("ADODB.Command") 
objCon.Open connectionstring 

objComm.ActiveConnection = objCon.ConnectionString 
objComm.CommandText = "A_Page_Paging" 
objComm.CommandType = 4 


Set objParameter = objComm.CreateParameter 
objParameter.Name = "selected_Char" 
objParameter.Type = 129 
objParameter.Direction = 1 
objParameter.Size = 3 
objParameter.Value = Selected_Button 
objComm.Parameters.Append objParameter 

Set objParameter2 = objComm.CreateParameter 
objParameter2.Name = "PermissionID" 
objParameter2.Type = 129 
objParameter2.Direction = 1 
objParameter2 .Size = 3 
objParameter2 .Value = P_ID 
objComm.Parameters.Append objParameter2 

set objRS = objComm.Execute 
+0

Appelez simplement la procédure stockée 'A_Page_Paging' en ne passant que'! 'Comme premier paramètre, au lieu de passer la lettre sélectionnée. Publiez le code où vous exécutez la procédure stockée dans le code ASP si vous souhaitez obtenir de l'aide supplémentaire. –

+0

@shadowwizard J'ai ajouté le code que vous avez demandé –

Répondre

1

Modifier cette ligne dans votre code:

objParameter.Value = Selected_Button 

A cette place:

objParameter.Value = "!" 

Le code que vous avez déjà dans la boucle devrait cacher les cases qui ne font pas partie de la "page" actuelle.

+0

Comment puis-je filtrer par tout sauf une lettre que j'ai utilisée aveC# dans ma procédure stockée? –

+0

@kurupt Je ne sais pas à quoi cela sert, vous pouvez simplement avoir 'objParameter.Value =" # "' –

Questions connexes