Generating a table of differences between two dictionaries
You should separate the logic from your representation and first collect those differences in a separate list. Also, what are the types of your dictionaries? All those ToString()s make it really noisy and are likely not necessary. Furthermore, use a foreach loop to iterate through your key list, this will also automatically get rid of all those keyList[i] accesses. And finally, instead of appending to a string directly, use a StringBuilder to make it more efficient:

// Use a separate type to collect your diffs
class DiffEntry
{
    public string ColumnName { get; set; }
    public string OldValue { get; set; }
    public string NewValue { get; set; }
}

// collect all diffs
List&lt;DiffEntry&gt; diffs = new List&lt;DiffEntry&gt;();
foreach (string key in keyList)
{
    if (oldDic.ContainsKey(key))
    {
        if (newDic[key] != oldDic[key])
        {
            diffs.Add(new DiffEntry()
            {
                ColumnName = colNames[key],
                OldValue = oldDic[key],
                newValue = newDic[key]
            });
        }
    }
    else
    {
        diffs.Add(new DiffEntry()
        {
            ColumnName = newDic,
            NewValue = newDic[key]
        });
    }
}

// generate the actual table output
StringBuilder tableContent = new StringBuilder();
foreach (DiffEntry diff in diffs)
{
    tableContent.Append("&lt;tr style='border: 1px solid black;'&gt;");
    tableContent.Append("&lt;td style='border: 1px solid black;'&gt;");
    tableContent.Append(diff.ColumnName);
    tableContent.Append("&lt;/td&gt;&lt;td style='border: 1px solid black;'&gt;");
    tableContent.Append(diff.OldValue);
    tableContent.Append("&lt;/td&gt;&lt;td style='border: 1px solid black;'&gt;");
    tableContent.Append(diff.NewValue);
    tableContent.Append("&lt;/td&gt;&lt;/tr&gt;");
}
table += tableContent.ToString();