Hej har en Sp med int totalRows output. Hur ser din divisionlist klass ut? Sorry att jag inte skrev ner den jag har en DivisionVO och en DivisionListVO, Ska testa det första. objCmd.Parameters["totalRows"] ligger i LayerDB Hur får jag tag i det? Istallet for att anvanda DivisionListVO tycker jag du ska undersoka Generic lists. Men det har jag. output i SQL
Hur får jag tag på den via min codebehind sida?
Jag har en DivisionListVO dlVO = new DivisionList();
Men jag vill få tag i antal rader fr tabellen. använder jag mig av dlVO.Count() får jag PAGE_SiZE.
Vad bör jag skriva i DivisionList för att få tag i värdet?
public DivisionListVO getDivisions(int SortOrder, DateTime MatchDateFrom, DateTime MatchDateTo, string SeriesId, string County, int currentPageNumber, int PAGE_SIZE)
{
DivisionListVO dListVO = new DivisionListVO();
DataSet dsRetVal = new DataSet();
SqlCommand objCmd = new SqlCommand("p_getDivisions", connection);
objCmd.CommandType = CommandType.StoredProcedure;
SqlDataAdapter objAdapter = new SqlDataAdapter(objCmd);
objAdapter.SelectCommand = objCmd;
objCmd.Parameters.Add("@RETURN_VALUE", SqlDbType.Int);
objCmd.Parameters["@RETURN_VALUE"].Direction = ParameterDirection.ReturnValue;
objCmd.Parameters.Add("@parmSortOrder", SqlDbType.Int);
objCmd.Parameters["@parmSortOrder"].Direction = ParameterDirection.Input;
objCmd.Parameters["@parmSortOrder"].Value = SortOrder.ToString().Trim();
objCmd.Parameters.Add("@startRowIndex", SqlDbType.Int);
objCmd.Parameters["@startRowIndex"].Direction = ParameterDirection.Input;
objCmd.Parameters["@startRowIndex"].Value = currentPageNumber.ToString().Trim();
objCmd.Parameters.Add("@maximumRows", SqlDbType.Int);
objCmd.Parameters["@maximumRows"].Direction = ParameterDirection.Input;
objCmd.Parameters["@maximumRows"].Value = PAGE_SIZE.ToString().Trim();
objCmd.Parameters.Add("@totalRows", SqlDbType.Int, 4);
objCmd.Parameters["@totalRows"].Direction = ParameterDirection.Output;
objCmd.Parameters.Add("@parmMatchDateFrom", SqlDbType.DateTime);
objCmd.Parameters["@parmMatchDateFrom"].Direction = ParameterDirection.Input;
objCmd.Parameters["@parmMatchDateFrom"].Value = MatchDateFrom.ToString().Trim();
objCmd.Parameters.Add("@parmMatchDateTo", SqlDbType.DateTime);
objCmd.Parameters["@parmMatchDateTo"].Direction = ParameterDirection.Input;
objCmd.Parameters["@parmMatchDateTo"].Value = MatchDateTo.ToString().Trim();
objCmd.Parameters.Add("@parmSeriesId", SqlDbType.NChar);
objCmd.Parameters["@parmSeriesId"].Direction = ParameterDirection.Input;
objCmd.Parameters["@parmSeriesId"].Value = SeriesId.ToString().Trim();
objCmd.Parameters["@parmSeriesId"].Size = 20;
objCmd.Parameters.Add("@parmCounty", SqlDbType.NVarChar);
objCmd.Parameters["@parmCounty"].Direction = ParameterDirection.Input;
objCmd.Parameters["@parmCounty"].Value = County.ToString().Trim();
objCmd.Parameters["@parmCounty"].Size = 50;
objCmd.Parameters.Add("@parmOK", SqlDbType.Int);
objCmd.Parameters["@parmOK"].Direction = ParameterDirection.Output;
objCmd.Parameters["@parmOK"].Size = 10;
int iRetVal = -100;
try
{
connection.Open();
objAdapter.Fill(dsRetVal);
iRetVal = (int)objCmd.Parameters["@RETURN_VALUE"].Value;
if (iRetVal == 0)
{
foreach (DataRow dr in dsRetVal.Tables[0].Rows)
{
DivisionVO dVO = new DivisionVO();
dVO.DivisionId = Convert.ToString(dr["DivisionId"]);
dVO.DivisionName = Convert.ToString(dr["DivisionName"]);
int DivisionNewItem = Convert.ToInt32(dr["DivisionNewItem"]);
if (DivisionNewItem == 0)
dVO.DivisionNewItem = false;
else
dVO.DivisionNewItem = true;
dVO.DivisionHcp = Convert.ToBoolean(dr["DivisionHcp"]);
dVO.DivisionNbrOfPlayers = Convert.ToInt32(dr["DivisionNbrOfPlayers"]);
dVO.DivisionBoss = Convert.ToBoolean(dr["DivisionBoss"]);
dVO.DivisionPercent = Convert.ToInt32(dr["DivisionPercent"]);
dVO.DivisionAverageFrom = Convert.ToInt32(dr["DivisionAverageFrom"]);
dVO.DivisionAverageTo = Convert.ToInt32(dr["DivisionAverageTo"]);
dVO.DivisionLanePoints = Convert.ToBoolean(dr["DivisionLanePoints"]);
try // Nedanstående kan vara NULL !!!
{
dVO.SeriesId = Convert.ToString(dr["SeriesId"]).Trim();
dVO.SeriesName = Convert.ToString(dr["SeriesName"]);
dVO.SeriesRankType = Convert.ToString(dr["SeriesRankType"]);
}
catch
{
}
dListVO.Add(dVO);
}
}
}
catch (Exception e)
{
string message = e.Message;
}
finally
{
// Close connection
if (connection.State != ConnectionState.Closed)
connection.Close();
objCmd.Dispose();
}
return dListVO;
} Sv: output i SQL
Det ser ut som att den har en intern lista List<DivisionVO>, kan det vara korrekt?
Eller ärver den från någon generic collection?
Hade hjälpt att se hur den ser ut :-)Sv:output i SQL
Jag får tag i värdet TotalRows om jag i debug klickar på dlVO
Men jag vill sätta i cs sidan int TotalRows = dVO.TotalRows(); Men då är den tom.
DivisionVO (Har klippt bort en del)
using System;
namespace LayerVO
{
/// <summary>
/// Summary description for Login.
/// </summary>
public class DivisionVO
{
private string divisionId;
private string divisionName;
private double totalRows;
public DivisionVO()
{
//
// TODO: Add constructor logic here
//
}
public string DivisionId
{
get
{
return divisionId;
}
set
{
divisionId = value;
}
}
public string DivisionName
{
get
{
return divisionName;
}
set
{
divisionName = value;
}
}
public double TotalRows
{
get
{
return totalRows;
}
set
{
totalRows = value;
}
}
}
}
DivisionListVO
using System;
using System.Collections;
using System.Collections.Generic;
namespace LayerVO
{
public class DivisionListVO : IEnumerable
{
private ArrayList DivisionList;
public DivisionListVO()
{
DivisionList = new ArrayList();
}
public void Add(DivisionVO divisionVO)
{
DivisionList.Add(divisionVO);
}
public void Insert(int index, DivisionVO DivisionVO)
{
DivisionList.Insert(index, DivisionVO);
}
public DivisionVO GetDivisionByIndex(int elementId)
{
DivisionVO dVO = new DivisionVO();
dVO = (DivisionVO)DivisionList[elementId];
return dVO;
}
public int Count()
{
return DivisionList.Count;
}
#region IEnumerable Members
public IEnumerator GetEnumerator()
{
return DivisionList.GetEnumerator();
}
#endregion
}
}Sv:output i SQL
Det andra ger 10 eftersom det är PAGE_SIZE som blir dlListVO.Count()Sv: output i SQL
Räcker det med att lägga till LayerDB, using LayerDB?
Gert Sv: output i SQL
Da skulle du bara skapa en ny lista
List<DivisionVO> divoList = new List<DivisionVO>();
Detta ger dig tillgang till starka typer (anvander aldrig det uttrycket pa svenska) och du slipper casta det i din egna list-klass.
Vill du sen ha reda pa hur manga DivisionVO dar ar i din lista ar det bara att kalla divoList.Count;Sv: output i SQL
dVO.TotalRows = Convert.ToDouble(objCmd.Parameters["@totalRows"].Value);
dListVO.Add(dVO);
Men när jag sedan fyller gridden så är dVO.TotalRows=0 medans om jag kollar dlVO.Count() så finns TotalRows = 343 men det är inte samma som dlVO.Count() för det är anta per sida = typ25.