По умолчанию iTextSharp отображает только полные строки. Если строка не завершена, эта строка не будет видна. Это будет так, как будто эта строка не существует.
iTextSharp также игнорирует таблицы без строк. Если таблица не имеет строк, таблица не отображается.
Это то, что вызывает проблему:
// You create a table with 5 columns
PdfPTable mTablePerson2 = new PdfPTable(5);
// You start the first row:
mTablePerson2.AddCell("Name"); // column 1
mTablePerson2.AddCell("Age"); // column 2
mTablePerson2.AddCell(secondNV); // column 3
mTablePerson2.AddCell(secondAgeV); // column 4
// You add the table to the document:
document.Add(mTablePerson2);
Как только добавили 4 клеток в ряд с 5 столбцов, эта строка будет отброшен. Поскольку в этой таблице есть только одна строка, и по мере удаления этой строки таблица не отображается.
Изменение new PdfPTable(5)
в new PdfPTable(4)
, или добавить дополнительную ячейку, или использовать метод для завершения строки автоматически, см PdfTable: last cell is not visible
Я объяснил проблему с mTablePerson2
, но тот же самый ответ относится к mTablePerson2Hobbies
. В этом случае вы создаете таблицу с 5 столбцами, но вы добавляете только 3 ячейки.
Кроме того, у вас есть что-то вроде этого:
if (firstN != "") {
// do something
}
else if(secondN != "") {
// do something else
}
Вы жалуетесь, что // do something else
не произойдет, если firstN
и secondN
критерий удовлетворен. Это вопрос элементарной логики.
Если firstN
не ""
чем // do something
будет выполнена, но не // do something else
независимо от значения secondN
.
Вы хотите что-то вроде этого:
if (firstN != "") {
// do something
}
if(secondN != "") {
// do something else
}
Вы должны роняйте else
.
UPDATE:
Пусть c1
и c2
являются логические значения, и что у вас есть:
if (c1)
do something
else if (c2)
do something else
Затем эта таблица показывает, что будет происходить:
| conditions | do something | do something else |
|------------|--------------|-------------------|
| c1 = false | --- | --- |
| c2 = false | | |
|------------|--------------|-------------------|
| c1 = true | YES | --- |
| c2 = false | | |
|------------|--------------|-------------------|
| c1 = false | --- | YES |
| c2 = true | | |
|------------|--------------|-------------------|
| c1 = true | YES | --- |
| c2 = true | | |
Eсть только один набор условий, которые будут «делать что-то еще»: c1
должно быть false
и c2
должно быть true
.Если c1
- true
, ваша программа даже не собирается смотреть значение c2
.
Вы хотите, чтобы таблица выглядит следующим образом:
| conditions | do something | do something else |
|------------|--------------|-------------------|
| c1 = false | --- | --- |
| c2 = false | | |
|------------|--------------|-------------------|
| c1 = true | YES | --- |
| c2 = false | | |
|------------|--------------|-------------------|
| c1 = false | --- | YES |
| c2 = true | | |
|------------|--------------|-------------------|
| c1 = true | YES | YES |
| c2 = true | | |
Для достижения этой цели необходимо:
if (c1)
do something
if (c2)
do something else
Update 2:
В комментариях, вы утверждаете, что вы хотите что-то вроде этого:
| conditions | do something | do something else |
|------------|--------------|-------------------|
| c1 = false | --- | --- |
| c2 = false | | |
|------------|--------------|-------------------|
| c1 = true | YES | --- |
| c2 = false | | |
|------------|--------------|-------------------|
| c1 = false | YES | YES |
| c2 = true | | |
|------------|--------------|-------------------|
| c1 = true | YES | YES |
| c2 = true | | |
В этом случае, я бы создать два метода:
void doSomething() {
// code to draw one table
}
void doSomethingElse() {
// code to draw another table
}
Теперь вы можете добиться того, что вы хотите, как это:
if (c1) {
doSomething();
}
else if (c2) {
doSomething();
doSomethingElse();
}
Или вы можете сделать это следующим образом:
if (c1 || c2) {
doSomething();
}
if (c2) {
doSomethingElse();
}
Если вы поедете в школу в Бельгии, это то, что вы узнаете в классе математики в возрасте 16 лет.
Ваш код пропускает открывающие скобки. – mkl
Спасибо @mkl Я, должно быть, пропустил это. – Shucoder