グリッドビューでDBからデータをバインドしていましたが、データソースの「CountryList」では、データリーダーから行が追加されるだけです。このコードの何が問題になっていますか?
using (cmd)
{
cmd.CommandType = CommandType.StoredProcedure;
cn.Open();
using (SqlDataReader dr = cmd.ExecuteReader())
{
if (dr.HasRows)
{
while (dr.Read())
{
CountryList.Add(ParseDataReader(dr));
}
cn.Close();
return CountryList;
}
}
}
解析メソッドは次のとおりです。
public static Countries ParseDataReader(SqlDataReader dr)
{
Countries MyCountries = new Countries();
dr.Read();
if (dr["CountryID"]!=DBNull.Value )
{
MyCountries.CountryID = (int)dr["CountryID"];
}
if (dr["Code"]!=DBNull.Value)
{
MyCountries.Code = dr["Code"].ToString();
}
if (dr["Name"]!=DBNull.Value)
{
MyCountries.Name = dr["Name"].ToString();
}
if (dr["RequiresState"]!= DBNull.Value)
{
MyCountries.RequiresState = (bool)dr["RequiresState"];
}
if (dr["Order"]!=DBNull.Value)
{
MyCountries.Order = (decimal)dr["Order"];
}
return MyCountries;
}
参考:ストアドプロシージャは正しい行数を返しますが、データリーダーは結果から偶数行のみを読み取ります。