我有一个DataTable,我想遍历行中的单元格并将空单元格向左移动,以便将包含数据的单元格放在右边的列中,并将空点放在左边。
这是因为我在完成所有操作之前先获取单元格并将其拆分为逗号,然后将拆分的第二部分放在该单元格右侧的单元格中
因此,如果我在代码后面有一个空白单元格,它将填充到空白单元格中,而不是填充有数据的单元格中
我目前拥有的这段代码似乎无法正常工作
int rowcount = 0;
numberoftruncationsneeded = 0;
foreach (DataRow row in dt.Rows)
{
int columncount = 0;
foreach (var col in row.ItemArray)
{
if (dt.Columns[columncount].Caption.Contains("Address"))
{
if (dt.Columns.Count > columncount + 1)
{
if (dt.Columns[columncount + 1].Caption.Contains("Address"))
{
if (dt.Rows[rowcount].ItemArray[columncount].ToString().Length >= 32)
{
bool isblank = false;
int blankrow = 0;
foreach (DataColumn colzer in dt.Columns)
{
if (colzer.Caption.Contains("Address") && (dt.Columns.IndexOf(colzer) >= columncount))
{
if (dt.Rows[rowcount].ItemArray[dt.Columns.IndexOf(colzer)].ToString().Trim() == "")
{
dt.Rows[rowcount][dt.Columns.IndexOf(colzer)] = dt.Rows[rowcount][dt.Columns.IndexOf(colzer) - 1].ToString();
dt.Rows[rowcount][dt.Columns.IndexOf(colzer) - 1] = "";
}
}
}
bool isbad = true;
if (isPostCode(dt.Rows[rowcount][columncount + 1].ToString()))
isbad = false;
string firstaddress = "";
string secondaddress = " ";
while (isbad == true)
{
if (firstaddress == "")
firstaddress = dt.Rows[rowcount].ItemArray[columncount].ToString();
if (!firstaddress.Contains(",") || firstaddress == "")
{
isbad = false;
break;
}
int lastspace = firstaddress.LastIndexOf(",");
var tempsecond = firstaddress.Remove(0, lastspace + 1);
firstaddress = firstaddress.Substring(0, lastspace);
secondaddress = tempsecond + " " + secondaddress;
if (firstaddress.Length < 32)
isbad = false;
}
dt.Rows[rowcount][columncount] = firstaddress;
if (firstaddress.Length >= 32)
numberoftruncationsneeded++;
var temp = dt.Rows[rowcount][columncount + 1];
dt.Rows[rowcount][columncount + 1] = secondaddress + "" + temp;
}
}
}
}
columncount++;
}
rowcount++;
}
答案 0 :(得分:0)
我的问题是列循环。
Id找到一个空白并将其向左移动一个,但是程序不知道将其向左移动
为了解决这个问题,我这样做是倒退而不是前进
if(dt.Rows[rowcount].ItemArray[columncount].ToString().Contains(","))
{
for (int i = dt.Columns.Count - 1; i > columncount + 1; i--)
{
if (dt.Columns[i].Caption.Contains("Address"))
{
if (dt.Rows[rowcount].ItemArray[i].ToString().Trim() == "")
{
dt.Rows[rowcount][i] = dt.Rows[rowcount][i - 1].ToString();
dt.Rows[rowcount][i - 1] = "";
}
}
}
}
//foreach (DataColumn colzer in dt.Columns)
//{
// if (colzer.Caption.Contains("Address") && (dt.Columns.IndexOf(colzer) >= columncount))
// {
// if (dt.Rows[rowcount].ItemArray[dt.Columns.IndexOf(colzer)].ToString().Trim() == "")
// {
// dt.Rows[rowcount][dt.Columns.IndexOf(colzer)] = dt.Rows[rowcount][dt.Columns.IndexOf(colzer) - 1].ToString();
// dt.Rows[rowcount][dt.Columns.IndexOf(colzer) - 1] = "";
// }
// }
//}