Добавить изображение в HTML-таблицу динамически - PullRequest
0 голосов
/ 31 января 2011

Я пытаюсь добавить изображение в таблицу динамически, но этого не происходит ... также, когда я добавляю изображение в ячейку, появляется сообщение об ошибке:

Невозможно получить внутреннее содержимое, потому что содержимое не является буквальным.

        if (filteredFileList.Count != 0 && filteredFileList != null) {
            imgProduct.ImageUrl = Server.MapPath(@"/ysyp/Images/Products/") + filteredFileList[0].Name;
            rowCount = 1;
            columnCount = filteredFileList.Count;
            try {
                HtmlTable tbProductImage = new HtmlTable();
                HtmlTableRow trImageRow = new HtmlTableRow();
                for (int j = 0; j < columnCount; j++) {
                    if (filteredFileList.Count != 0) {
                        HtmlTableCell tdImageRow = new HtmlTableCell();
                        Image imageProduct = new Image();                       
                        imageProduct.ID = "img" + filteredFileList[j].Name.Substring(0, filteredFileList[j].Name.LastIndexOf("."));
                        imageProduct.ImageUrl = Server.MapPath(@"/ysyp/Images/Products/") + filteredFileList[j].Name;
                        tdImageRow.Controls.Add(imageProduct);
                        trImageRow.Controls.Add(tdImageRow);
                    }
                }

                tbProductImage.Controls.Add(trImageRow); // <<< ERROR HERE

                tdProduct.Controls.Add(tbProductImage);
            } catch (Exception exc) {
                string msg = exc.Message;
            }
        }

Как я могу это исправить?

Ответы [ 5 ]

2 голосов
/ 31 января 2011

Попробуйте это:

HtmlTable tbProductImage = new HtmlTable();
HtmlTableRow trImageRow = new HtmlTableRow();
for (int j = 0; j < columnCount; j++)
{
    if (filteredFileList.Count != 0)
    {

        HtmlTableCell tdImageCell = new HtmlTableCell();
        Image imageProduct = new Image();
        imageProduct.ID = "id";
        imageProduct.ImageUrl = "url";
        tdImageCell.Controls.Add(imageProduct);
        trImageRow.Cells.Add(tdImageCell);
    }
}
tbProductImage.Rows.Add(trImageRow);
1 голос
/ 31 января 2011

Вы не должны использовать Controls.Add, вместо этого используйте Rows.Add, попробуйте это:

tbProductImage.Rows.Add(trImageRow);

Но я не уверен, решит ли это вашу проблему.

0 голосов
/ 31 января 2011

Вы пытаетесь добавить изображение к tablerow (TR), это не будет работать, потому что TR s может содержать только tablecells (TD). Вы находитесьпопытка добавить строку в таблицу напрямую, а не в коллекцию Rows таблицы:

Способ сделать это:

  1. Создать новую строку.
  2. Сделать новую клетку.
  3. Добавить изображение в новую ячейку.
  4. Добавить новую ячейку в новую строку.
  5. Добавить новую строку в таблицу (через соединение Rows таблицы)

РЕДАКТИРОВАТЬ: Извините, мое зрение не то, что было - старость и поздние ночи: - (

Я думаю, что ваш код выходит из строя, потому что вы не добавляете строку в коллекцию Rows таблицы:

tbProductImage.Controls.Add (trImageRow); // <<<ОШИБКА ЗДЕСЬ </strike> tbProductImage.Rows.Add (trImageRow); tdProduct.Controls.Add (tbProductImage);

Дополнительная информация: http://msdn.microsoft.com/en-us/library/7bewx260(v=VS.85).aspx

0 голосов
/ 31 января 2011

Добавьте ячейку в строку, а затем добавьте элемент управления в ячейку.

Мы делаем такие вещи ...

Dim r As TableRow
    Dim c As TableCell
    Dim lit As Literal

    Me.displayTable.Rows.Clear()

    r = AddRow(Me.displayTable, 0)
    c = AddCell(r, 100)

    lit = New Literal
    lit.Text = "Thank you for registering your interest."
    c.Controls.Add(lit)

Объекты Table, Row и Cell относятся к пространству имен System.Web.UI.WebControls, но отображаются в виде таблиц HTML.

0 голосов
/ 31 января 2011

Попробуйте это:

tbProductImage.Rows.Add(trImageRow);

tbProductImage является HtmlTable. Если вы хотите добавить HtmlTableRow в таблицу, вам нужно добавить его в коллекцию Rows. Добавление его в коллекцию Controls даст вам ошибку, которую вы видите в данный момент. Поэтому изменение кода с Controls на Rows должно дать вам то, что вам нужно.

То же самое относится и к добавлению ячейки в строку. Несколько строк выше, вы хотите заменить trImageRow.Controls.Add(tdImageRow); на trImageRow.Cells.Add(tdImageRow);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...