[已解决],gzaxx的答案。在数据网格上显示两个相同的数据
尽管在数据库中一个成员没有被插入两次,但在数据网格中却显示了两次! 我有我添加成员的这个表单,以及我添加成员付款的另一个表单。当我向会员添加超过1笔付款时,该会员会在网格中显示两次。
要列出成员我使用这个:
public List<Member> ListMembers()
{
List<Member> Members = new List<Member>();
string STATUS = "SELECT m.Id, m.Name,m.Surname, m.EntryDate, p.EndDay FROM Members m left join Payments p on m.Id = p.MemberId order by m.Id ";
using (sqlConnection = new SqlConnection(sqlConnectionString_WORK))
{
sqlConnection.Open();
using (SqlCommand sqlCommand = new SqlCommand(STATUS, sqlConnection))
{
var sqlReader = sqlCommand.ExecuteReader();
while (sqlReader.Read())
{
var member = new Member
{
Id = Convert.ToInt32(sqlReader["Id"]),
Name = sqlReader["Name"].ToString(),
Surname = sqlReader["Surname"].ToString(),
EntryDate = Convert.ToDateTime(sqlReader["EntryDate"])
};
if (sqlReader["EndDay"].ToString() != "")
if (Convert.ToDateTime(sqlReader["EndDay"]) < DateTime.Today)
{
member.Status = Status.Unpaid.ToString();
}
else
{
member.Status = Status.Paid.ToString();
}
Members.Add(member);
}
}
}
return Members;
}
付款:
public List<Payment> ListPayments(Payment entity)
{
List<Payment> Payments = new List<Payment>();
string SELECT = "SELECT * FROM Payments WHERE MemberId = @MemberId";
using (sqlConnection = new SqlConnection(sqlConnectionString_WORK))
{
sqlConnection.Open();
using (SqlCommand sqlCommand = new SqlCommand(SELECT, sqlConnection))
{
sqlCommand.Parameters.Add("@MemberId", SqlDbType.Int).Value = entity.MemberId;
var sqlReader = sqlCommand.ExecuteReader();
while (sqlReader.Read())
{
var payment = new Payment
{
Id = Convert.ToInt32(sqlReader["Id"]),
MemberId = Convert.ToInt32(sqlReader["MemberId"]),
Amount = Convert.ToDecimal(sqlReader["Amount"]),
StartDay = Convert.ToDateTime(sqlReader["StartDay"]),
EndDay = Convert.ToDateTime(sqlReader["EndDay"])
};
Payments.Add(payment);
}
}
}
return Payments;
}
如果会员没有付款,它会显示什么给它的状态栏。如果会员有一笔付款,它将显示其状态。但是,如果我添加新的付款(多于一个),数据网格将显示与其在网格上的付款相同的成员。我究竟做错了什么 ???
这只显示一个成员,所以它的固定方式......但它没有得到最后一笔付款。 :\ – Etrit
它最新'EndDay'。最新的payemnt是否与EndDay最新版本相同? – gzaxx
哦,没关系!我没有检查是否有一个日期已经比我注册的日期已经很大(不知道说出正确的词)。它工作完美。谢谢 :) – Etrit