saminjoon
دوشنبه 10 آذر 1393, 23:53 عصر
سلام به همه دوستان
من برای صفحه بندی کردن گریدویو به صورتی که میخواستم , یک کد پیدا کردم که با Stored Procedure کار میکنه
اولین باره من با Stored Procedure کار میکنم برای همین برام کمی نامفهومه
یک روزه تمام دارم سعی میکنم یک پارامتر بذارم توش موفق نمیشم:عصبانی++:
من کد فراخوانی Stored Procedure و خود Stored Procedure رو میذارم و بعد مشکلمو میگم
Private Sub GetCustomersPageWise(pageIndex As Integer)
Dim catp As String
'----------------------------
If drpx.selectedindex = 0 Then
catp = ""
Else
catp = " and userID=" & Session("id")
End If
'-------------------------------------------
Using con As New SqlConnection(constring)
Using cmd As New SqlCommand("users", con)
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.AddWithValue("@PageIndex", pageIndex)
cmd.Parameters.AddWithValue("@PageSize", Integer.Parse("30"))
cmd.Parameters.AddWithValue("@hfcat", catp)
cmd.Parameters.Add("@RecordCount", SqlDbType.Int, 4)
cmd.Parameters("@RecordCount").Direction = ParameterDirection.Output
con.Open()
Dim idr As IDataReader = cmd.ExecuteReader()
mygridview.DataSource = idr
mygridview.DataBind()
idr.Close()
con.Close()
Dim recordCount As Integer = Convert.ToInt32(cmd.Parameters("@RecordCount").Value)
Me.PopulatePager(recordCount, pageIndex)
End Using
End Using
End Sub
و این هم Stored Procedure که تو بانک نوشتم
USE [mydatabase]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[users]
(
@PageIndex INT = 1,
@PageSize INT = 10 ,
@hfcat nvarchar(500),
)
AS
BEGIN
SET NOCOUNT ON;
SELECT ROW_NUMBER() OVER
(order by id desc )
AS RowNumber ,[id] ,[title]
INTO #Results
FROM [user]
SELECT @RecordCount = COUNT(*)
FROM #Results
SELECT * FROM #Results
WHERE (RowNumber BETWEEN(@PageIndex -1) * @PageSize + 1 AND(((@PageIndex -1) * @PageSize + 1) + @PageSize) - 1)
DROP TABLE #Results
END
حالا مشکل من اینه که میخوام فقط متغیر @hfcat در شرط قرار بگیره یعنی : FROM [user] where @hfcat ، ولی خطا میده
میشه لطفا راهنماییم کنید؟
من برای صفحه بندی کردن گریدویو به صورتی که میخواستم , یک کد پیدا کردم که با Stored Procedure کار میکنه
اولین باره من با Stored Procedure کار میکنم برای همین برام کمی نامفهومه
یک روزه تمام دارم سعی میکنم یک پارامتر بذارم توش موفق نمیشم:عصبانی++:
من کد فراخوانی Stored Procedure و خود Stored Procedure رو میذارم و بعد مشکلمو میگم
Private Sub GetCustomersPageWise(pageIndex As Integer)
Dim catp As String
'----------------------------
If drpx.selectedindex = 0 Then
catp = ""
Else
catp = " and userID=" & Session("id")
End If
'-------------------------------------------
Using con As New SqlConnection(constring)
Using cmd As New SqlCommand("users", con)
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.AddWithValue("@PageIndex", pageIndex)
cmd.Parameters.AddWithValue("@PageSize", Integer.Parse("30"))
cmd.Parameters.AddWithValue("@hfcat", catp)
cmd.Parameters.Add("@RecordCount", SqlDbType.Int, 4)
cmd.Parameters("@RecordCount").Direction = ParameterDirection.Output
con.Open()
Dim idr As IDataReader = cmd.ExecuteReader()
mygridview.DataSource = idr
mygridview.DataBind()
idr.Close()
con.Close()
Dim recordCount As Integer = Convert.ToInt32(cmd.Parameters("@RecordCount").Value)
Me.PopulatePager(recordCount, pageIndex)
End Using
End Using
End Sub
و این هم Stored Procedure که تو بانک نوشتم
USE [mydatabase]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[users]
(
@PageIndex INT = 1,
@PageSize INT = 10 ,
@hfcat nvarchar(500),
)
AS
BEGIN
SET NOCOUNT ON;
SELECT ROW_NUMBER() OVER
(order by id desc )
AS RowNumber ,[id] ,[title]
INTO #Results
FROM [user]
SELECT @RecordCount = COUNT(*)
FROM #Results
SELECT * FROM #Results
WHERE (RowNumber BETWEEN(@PageIndex -1) * @PageSize + 1 AND(((@PageIndex -1) * @PageSize + 1) + @PageSize) - 1)
DROP TABLE #Results
END
حالا مشکل من اینه که میخوام فقط متغیر @hfcat در شرط قرار بگیره یعنی : FROM [user] where @hfcat ، ولی خطا میده
میشه لطفا راهنماییم کنید؟