I'm in the process of integrating a VS2003 Windows Application into a VS2005 2005 Web Application, and am having soe problems with some of the functionality of the windows app working in a web application.
The windows app does the following for several of it's controls - it creates a dataset of any number of columns and then sets them as the datasource for ComboBox controls, i.e.
ArrayList vSchemeList =new ArrayList();
using ( SQLDataReader rdr = vCmd.ExecuteReader() )
{
while (rdr.Read())
{
vSchemeList.Add( new SchemeInfo( rdr.GetString(0), rdr.GetInt32(1), rdr.GetDateTime(2), rdr.GetDouble(3) ) );
}
this.cboScheme.DataSource = vSchemeList;
}
where the SchemeInfo class has been declared as follows:
public class SchemeInfo
{
public string fSchemeName;
public int fSchemeID;
public DateTime fValnDate;
public string fValnDateStr;
public double fAssetVal;
private const string kDateFmt = "dd MMMM yyyy";
public SchemeInfo( string aName, int aID, DateTime aDate, double aAssetVal )
{
fSchemeName = aName;
fSchemeID = aID;
fValnDate = aDate;
fValnDateStr = aDate.ToString( kDateFmt );
fAssetVal = aAssetVal;
}
public override string ToString()
{
return string.Format( "{0} {1}", fSchemeName, fValnDateStr );
}
}
Also, like this:
private GroupSector[] strSectors;
using ( IDbCommand vCmd = getCommand() )
{
vCmd.CommandText = "SELECT ColumnA, ColumnB " +
"FROM DatabaseTable";
using ( IDataReader rdr = vCmd.ExecuteReader() )
{
while (rdr.Read())
{
GroupSector GS = new GroupSector(rdr.GetString(0), rdr.GetInt32(1),
rdr.GetInt32(2)
);
strSectors[intIndex] = GS;
intIndex++;
}
this.chklstSector.Items.AddRange(strSectors);
}
}
where the GroupSector class has been declared as follows:
public class GroupSector
{
public string Name;
public int Code;
public int GroupCode;
public GroupSector(string strName, int intCode, int intGroupCode)
{
this.Name = strName;
this.Code = intCode;
this.GroupCode = intGroupCode;
}
public override string ToString()
{
return this.Name;
}
}
Later on, this data is being read back out from the control in the following way:
SchemeInfo vInfo = (SchemeInfo) (sender as ComboBox).SelectedValue;
DateTime vDate = vInfo.fValnDate;intSelID = vInfo.fSchemeID;
strScheme = vInfo.fSchemeName;
and for the GroupSector, like this:
GroupSector oSector = (GroupSector) this.chklstSector.Items[i];
Trying to do this in a web app fails as for the GroupSector class it's unable to cast the GroupSector type to ListItem[] items and for SchemeInfo class, it's trying to cast a selected dropdownlist item as a SchemeInfo - in both cases it is unable to achieve this.
Can anyone recommend a way to do this (without having to re-write all the code), or, if I do have to re-write, a better way to do this?
Or am I just missing something obvious?
Thanks in advance
Martin