2011-07-04 102 views
1

我正在使用使用存儲過程按字母過濾的分頁。我需要保存複選框的值,因爲我通過字母過濾來提交表單。我有一個previous question類似於這很好,但我希望能夠保留我的存儲過程。分頁並保存複選框的值

存儲過程:

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 

尋呼按鈕:

<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"> 

功能,以節省複選框和複選框(該函數將只例如工作,如果我選擇具有值開始與A然後複選框過濾器A將顯示,如果我按B過濾它不會):

'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")) %>> 

以前的答案來解決分頁問題,​​但要求我改變我的存儲過程,我不喜歡做的事:

<% 
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 
%> 

執行存儲過程

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

只需調用存儲過程'A_Page_Paging'只傳遞'!'作爲第一個參數,而不是傳遞選定的字母。如果需要進一步幫助,請將代碼放在ASP代碼中執行存儲過程的地方。 –

+0

@shadowwizard我添加了你所要求的代碼 –

回答

1

更改這一行代碼:

objParameter.Value = Selected_Button 

對此代替:

objParameter.Value = "!" 

您在循環中已有的代碼應該隱藏不屬於當前「頁面」的複選框。

+0

我怎樣才能過濾除了我在存儲過程中用#號的字母? –

+0

@kurupt不知道這是什麼用法,你可以簡單地使用'objParameter.Value =「#」' –