我还在学习编程
我正在尝试将客户数据列入清单。所以我可以从索引中获取值,但它只能获得第一个客户。索引不会增加,我仍然感到困惑,我已经移动了变量增量索引将无法正常工作,也许我的逻辑不正确。这是代码,告诉我哪里不对.. ??谢谢你的帮助和解释
public void getJamVSpot()
{
var listJamAwal = new List<String>();
var listJamAkhir = new List<String>();
var listNota = new List<int>();
DateTime tglSewa = dtp_tglSewa.Value.Date;
int r = 0;
String ja = String.Empty;
String jb = String.Empty;
int n = 0;
int indexUp = 0;
if (dtp_tglSewa.Value.Date == jl.getTglJadwalVspot(tglSewa, lap) && rdb_Lapangan_VSpot.Checked == true || rdb_rumputSintetis.Checked == true)
{
IEnumerator<String> jAwal = jl.getJamAwalbyDate(tglSewa, lap);
while (jAwal.MoveNext())
{
listJamAwal.Add(jAwal.Current);
}
IEnumerator<String> jAkhir = jl.getJamAkhirbyDate(tglSewa, lap);
while (jAkhir.MoveNext())
{
listJamAkhir.Add(jAkhir.Current);
}
IEnumerator<int> nota = jl.getNota(tglSewa, lap);
while (nota.MoveNext())
{
listNota.Add(nota.Current);
}
ja = listJamAwal[indexUp];
jb = listJamAkhir[indexUp];
n = listNota[indexUp];
int count = jl.countNota(n);
String penyewa = jl.getNamaPenyewa(n);
String no_kontak = jl.getNomorKontak(n);
String status = jl.getStatusSewa(n);
for (int i = 1; i <= count; i++)
{
foreach (DataGridViewRow row in dgv_Jadwal_Sewa.Rows)
if (row.Cells[0].Value.ToString().Equals(ja))
{
r = row.Index;
row.Cells[2].Value = penyewa;
row.Cells[3].Value = no_kontak;
row.Cells[4].Value = status;
if (ja != jb)
{
ja = jl.getJamAkhirbyJamAwal(ja);
row.Cells[2].Value = penyewa;
row.Cells[3].Value = no_kontak;
row.Cells[4].Value = status;
//dgv_Jadwal_Sewa.Rows[r].Selected = true;
}
break;
}
}
} indexUp++;
}
答案 0 :(得分:1)
当您递增indexUp
变量时,您不再使用它了。
在您的代码中,您只是恢复第一个项目(0),使用此值(在循环中)执行一些操作并退出。
例如,你可以用这个循环包装你的东西:
for (int indexUp = 0; indexUp < listJamAwal.Count; indexUp++)
{
ja = listJamAwal[indexUp];
jb = listJamAkhir[indexUp];
n = listNota[indexUp];
int count = jl.countNota(n);
String penyewa = jl.getNamaPenyewa(n);
String no_kontak = jl.getNomorKontak(n);
String status = jl.getStatusSewa(n);
for (int i = 1; i <= count; i++)
{
foreach (DataGridViewRow row in dgv_Jadwal_Sewa.Rows)
{
if (row.Cells[0].Value.ToString().Equals(ja))
{
r = row.Index;
row.Cells[2].Value = penyewa;
row.Cells[3].Value = no_kontak;
row.Cells[4].Value = status;
if (ja != jb)
{
ja = jl.getJamAkhirbyJamAwal(ja);
row.Cells[2].Value = penyewa;
row.Cells[3].Value = no_kontak;
row.Cells[4].Value = status;
//dgv_Jadwal_Sewa.Rows[r].Selected = true;
}
break;
}
}
}
}
答案 1 :(得分:1)
访问项目的方式有两个问题:
您可以在循环外部分配变量。这将获得索引在该时刻指向的值,并且稍后更改索引变量不会更改分配给变量的值。你必须在循环中分配变量,当然,除了循环开始之前你需要的count
变量。
您正在循环后递增indexUp
变量,此时您不再使用它。你必须将它放在循环中,以便它可以在下一次迭代中用于将新值读入变量。
答案 2 :(得分:0)
我没有看到使用第一个循环使用“i”然后第二个使用foreach的任何意义。它完全错了 - 你正在做同样的事情“数”次! 您还需要更改penyewa,no_kontak,状态,因为您在循环中使用相同的值
此外,我从未见过如此令人困惑和不清楚的变量命名,如果你想让其他人使用它,你应该改变它:D