我想把DataGridviewRow作为一个ref传递给它的单元格,但是我不能这样做。
foreach(DataGridViewRow dgr in dgvMarksEntryByClassWise.Rows)
{
RowValueSet(ref dgr);
} 这里给出了编译时错误,因为dgr是一个foreach iteration variable。
我还试着用for loop来做
for (int i = 0; i < dgvMarksEntryByClassWise.Rows.Count; i++)
{
RowValueSet(ref dgvMarksEntryByClassWise.Rows[i]);
} 但是这里也给出了编译时错误:
A property,indexer or dynamic member acces cannot passed as an out reference
我参考了上面提出的问题,但没有找到适当的解决办法。
请建议我怎么做这件事
更新代码
void RowValueSet(ref DataGridViewRow dgr)
{
dgr.Cells["StudentZero"].Value = ss.Where(w => w.MarksheetMarks == "0").Count();
if (ss.Count() != 0)
dgr.Cells["StudentISEmpty"].Value = Convert.ToInt16(lblTotlatStudent1.Text) - ss.Count();
else
dgr.Cells["StudentISEmpty"].Value = 0;
dgr.Cells["StudentEntry"].Value = ss.Count();
}发布于 2014-02-12 14:06:14
您不能使用"foreach“甚至"for”分配迭代的枚举项。有一次,我用了一段代码:
List<DataGridViewRow> lstDgr = new List<DataGridViewRow>();
foreach(DataGridViewRow dgr in dgvMarksEntryByClassWise.Rows)
{
DataGridViewRow dgrTemp = dgr;
RowValueSet(ref dgrTemp);
lstDgr.Add(dgrTemp);
}
dgvMarksEntryByClassWise.Rows.Clear();
dgvMarksEntryByClassWise.Rows.AddRange(lstDgr); //Not sure about the AddRange, try the Add method instead希望这能有所帮助
发布于 2014-02-17 18:03:47
正如上面的注释所述,您不需要通过引用传递DataGridViewRow。从参数中删除ref。
void RowValueSet(DataGridViewRow dgr)
{
dgr.Cells["StudentZero"].Value = ss.Where(w => w.MarksheetMarks == "0").Count();
if (ss.Count() != 0)
dgr.Cells["StudentISEmpty"].Value = Convert.ToInt16(lblTotlatStudent1.Text) - ss.Count();
else
dgr.Cells["StudentISEmpty"].Value = 0;
dgr.Cells["StudentEntry"].Value = ss.Count();
}如果网格中的值似乎没有更新,那是因为另一个原因。当需要刷新显示时,是否重新绑定网格?
发布于 2014-01-21 05:47:16
这个怎么样?
for (int i = 0; i < dgvMarksEntryByClassWise.Rows.Count; i++)
{
var myRow = dgvMarksEntryByClassWise.Rows[i];
RowValueSet(ref myRow);
} https://stackoverflow.com/questions/21250005
复制相似问题