Автоматизация регистрации и мониторинга заявок от контрагентов
Дипломная работа - Экономика
Другие дипломы по предмету Экономика
татистика, 2003. - 768 с
Приложение 1. Листинг программных модулей
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server"
">TypeName="ComponentsDB.CatalogDB" SelectCountMethod="GetCountByGenre" SelectMethod="GetPageProductsByGenre" EnablePaging="true" OnSelected="ObjectDataSource_Selected" EnableCaching="true" CacheDuration="360">
<asp:QueryStringParameter Name="GenreID" QueryStringField="GenreID"
Type="Int32" />
,
где
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