Вы добавили флажок в ячейку, а не в строку:
table_cell2.Controls.Add(checkmate);
Следовательно - в одной строке несколько ячеек с идентификатором "checkmate":
* 1006 например *
<tr id="somerow">
<td><input type="checkbox" id="checkmate"/></td>
<td><input type="checkbox" id="checkmate"/></td>
</tr>
Таким образом, в строке "somerow" есть несколько флажков с идентификатором "checkmate".
Ваш код для добавления флажков, похоже, выглядит так, как будто вы только добавляете один из них - так что, должно быть, вы что-то упустили.
Попробуйте удалить код FindControl и посмотрите, какой фактический HTML-код отображается.