我遇到了一些问题,我想跟踪网格的第二行是否有数据,然后该值将变为in(文本框只读)。表示超过1个项目。我正在使用循环
var esc = (char)27;
var right = esc + "|rA";
//string right = Encoding.ASCII.GetString(new byte[] { 27, (byte)'|', (byte)'r', (byte)'A' });
foreach (ListViewItem item in listView_Sepet.Items)
{
posPrinter.PrintNormal(PrinterStation.Slip, right + item.SubItems[1].Text + Environment.NewLine);
}
*我是这两种技术的初学者,对使用循环有些困惑,有时使用for和if可能会模糊。如果可以的话,请详细解释,谢谢。
答案 0 :(得分:0)
几件事。首先,要明确一点,您的数组如下所示:
var example = [
{
"hello": [
["item 1", "item 2", "", "item 3"],
["item 1", "", "item 3", "item 4"]
]
}
]
如果您的示例对象看起来不是这样,请根据需要进行澄清。
稍微整理一下示例和变量:
var tables = example;
for (var tableIndex = 0; tableIndex < tables.length; tableIndex++)
{
var tableRows = tables[tableIndex];
}
只需遍历示例变量中的每个网格即可。
接下来,让我们循环浏览各行:
var tables = example;
for (var tableIndex = 0; tableIndex < tables.length; tableIndex++)
{
var tableRows = tables[tableIndex];
for (var rowIndex = 0; rowIndex < tableRows.length; rowIndex++)
{
var rowCells = tableRows[rowIndex]
var allCellsHavVal = rowCells.every(cellHasVal);//If every cell has a value
}
}
function cellHasVal(cell)
{
return Boolean(cell);//return true if cell is 'truthy' (has a value);
}
我们在这里做了几件事:
最后一步: 循环遍历行中的每个单元格,并根据规则设置格式:
var tables = example;
for (var tableIndex = 0; tableIndex < tables.length; tableIndex++)
{
var tableRows = tables[tableIndex];
for (var rowIndex = 0; rowIndex < tableRows.length; rowIndex++)
{
var rowCells = tableRows[rowIndex]
var allCellsHavVal = rowCells.every(cellHasVal);//If every cell has a value
var shouldBold = rowIndex > 1; //If more than one row of data, bold the cell
for (var cellIndex = 0; cellIndex < rowCells.length; cellIndex++)
{
if (shouldBold)
{
//bold cell (implementation can vary based on your toolset, style, etc.)
}
if (allCellsHaveValue)
{
//Turn background of cell yellow,
}
}
}
}
function cellHasVal(cell)
{
return Boolean(cell);//return true if cell is 'truthy' (has a value);
}