private void ReadByPage(string commandText, string WhereClause, string OrderByClause, Int32 PerPage, Int32 PageNum)
{
string template = "WITH VIRTUAL_HALIDE_ROWSET AS (SELECT ROW_NUMBER() OVER( ORDER BY [ORDERBY] ) AS ROWNUMBER, * FROM ([SELECT]) AS ML_HALIDE WHERE [WHERECLAUSE]) SELECT * FROM VIRTUAL_HALIDE_ROWSET WHERE ROWNUMBER BETWEEN CONVERT(varchar, [BEGINRECORD]) and CONVERT(varchar, [ENDRECORD]);";
if (PerPage > 0 && PageNum > 0)
{
template = template.Replace("[ORDERBY]", OrderByClause);
template = template.Replace("[SELECT]", commandText);
template = template.Replace("[WHERECLAUSE]", WhereClause);
Int32 beginRecord = (PerPage * PageNum) - PerPage + 1;
Int32 endRecord = (PerPage * PageNum);
template = template.Replace("[BEGINRECORD]", beginRecord.ToString());
template = template.Replace("[ENDRECORD]", endRecord.ToString());
sqlCommandString = template;
try
{
cn = new SqlConnection();
cn.ConnectionString = ConnectionString;
cn.Open();
cmd = new SqlCommand();
cmd.Connection = cn;
cmd.CommandTimeout = 0;
cmd.CommandText = template;
dr = cmd.ExecuteReader();
}
catch (Exception err)
{
_lastSqlError = err;
}
}
}