Дипломная работа: Автоматизация регистрации и мониторинга заявок от контрагентов
TypeName="ComponentsDB.CatalogDB"
SelectCountMethod="GetCountByGenre"
SelectMethod="GetPageProductsByGenre" EnablePaging="true"
OnSelected="ObjectDataSource_Selected" EnableCaching="true"
CacheDuration="360">
<SelectParameters>
<asp:QueryStringParameter
Name="GenreID" QueryStringField="GenreID"
Type="Int32" />
</SelectParameters>
</asp:ObjectDataSource>,
где
EnablePading
= “true” - включает разбиение на страницы в источнике данных.
SelectCountMethod
= "GetCountByGenre" – метод для подсчёта общего кол-ва строк в
таблице. Данный метод необходим, для того чтобы GridView мог создать корректное
количество ссылок страниц на панели навигации.
SelectMethod
= "GetPageProductsByGenre" – метод выбирающий информацию для текущей
страницы.
Метод
GetCountByGenre, вызывает хранимую процедуру GetCountByGenre, которая
возвращает кол-во альбомов в каталоге, относящихся к жанру, указанному в
параметре GenreID.
Метод
GetCountByGenre:
public static int
GetCountByGenre(int GenreID)
{
SqlConnection conn = new
SqlConnection(WebConfigurationManager.ConnectionStrings["connStr"].ConnectionString);
SqlCommand cmd = new
SqlCommand("GetCountByGenre", conn);
cmd.CommandType =
CommandType.StoredProcedure;
cmd.Parameters.Add("GenreID",
SqlDbType.Int);
cmd.Parameters["GenreID"].Value
= GenreID;
int count=-1;
try
{
conn.Open();
count =
(int)cmd.ExecuteScalar();
}
catch(SqlException)
{
conn.Close();
}
finally
{
conn.Close();
}
return count;
}
Хранимая процедура GetCountByGenre
CREATE PROCEDURE GetCountByGenre
(@GenreID INT)
AS
SELECT COUNT(*) FROM Catalogue
WHERE GenreID = @GenreID
GO
Метод
GetPageProductsByGenre вызывает хранимую процедуру
GetPageProductsByGenre, которая возвращает данные для текущей страницы GridView.
Метод GetPageProductsByGenre:
public static DataSet
GetPageProductsByGenre(int startRowIndex, int maximumRows, int GenreID)
{
SqlConnection conn = new
SqlConnection(WebConfigurationManager.ConnectionStrings["connStr"].ConnectionString);
SqlCommand cmd = new SqlCommand("GetPageProductsByGenre",
conn);
cmd.CommandType =
CommandType.StoredProcedure;
cmd.Parameters.Add("Start",
SqlDbType.Int);
cmd.Parameters["Start"].Value
= startRowIndex;
cmd.Parameters.Add("Count",
SqlDbType.Int);
cmd.Parameters["Count"].Value
= maximumRows;
cmd.Parameters.Add("GenreID",
SqlDbType.Int);
cmd.Parameters["GenreID"].Value
= GenreID;
DataSet ds = new DataSet();
SqlDataAdapter da = new
SqlDataAdapter();
da.SelectCommand = cmd;
try
{
conn.Open();
da.Fill(ds);
}
catch (SqlException)
{
conn.Close();
return null;
}
finally
{
conn.Close();
}
return ds;
}
Хранимая процедура GetPageProductsByGenre:
CREATE PROCEDURE
GetPageProductsByGenre (@Start INT, @Count INT, @GenreID INT)
AS
CREATE TABLE #TempProductsList
(
Num INT IDENTITY (0,1) PRIMARY KEY,
ProductID INT,
ArtistName NVARCHAR(50),
ArtistID INT,
AlbumName NVARCHAR(50),
UnitCost MONEY,
Presence BIT
)
INSERT INTO #TempProductsList
(ProductID, ArtistName, ArtistID,
AlbumName, UnitCost, Presence)
SELECT ProductID, ArtistName,
Catalogue.ArtistID, AlbumName, UnitCost, Presence
FROM Catalogue, Artists
WHERE GenreID = @GenreID AND
Catalogue.ArtistID = Artists.ArtistID
ORDER BY ArtistName
DECLARE @FromNum INT
DECLARE @ToNum INT
SET @FromNum = @Start
SET @ToNum = @Start + @Count – 1
SELECT ProductID, ArtistName,
ArtistID, AlbumName, UnitCost, Presence FROM #TempProductsList
WHERE Num >= @FromNum AND Num
<= @ToNum
GO
|