【发布时间】:2013-06-13 22:21:08
【问题描述】:
我还在学习编程
我正在尝试获取列表中的客户数据。所以我可以从索引中获得价值,但它只能获得第一个客户。索引不会增加,我仍然很困惑,我已经移动变量以增加索引不起作用,也许我的逻辑不正确。这是代码,告诉我哪里不对..??谢谢你的帮助和解释
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++;
}
【问题讨论】:
-
你可以在这里看到结果img21.imageshack.us/img21/2295/i84.png
-
是的,将
indexUp++放入您的for循环中。虽然我建议查看DataTable类并将您的DataGridView绑定到表。省去了很多工作。 -
我试过插入循环,还是不行,我试着把它放在break的上面;
-
即使您在循环内移动
indexUp使其递增,您仍然没有使用新值。您只能在循环外使用indexUp。您使用该值来获取count,而count又用于再次遍历循环... -
如果您单步执行代码并在执行此操作时检查值,您可能会找出问题所在。我建议您将使用 IEnumerable 的方式更改为更方便的 foreach 方法。
标签: c# list datagridview indexing