powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Преобразование тега <table></table> в объект Table t = new Table() (C#)
20 сообщений из 20, страница 1 из 1
Преобразование тега <table></table> в объект Table t = new Table() (C#)
    #38142928
romanych3333
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть: string с html-таблицей, например:
"<table><tr><td>aaa</td><td>bbb</td></tr></table>" (может быть очень длинная и сложная, включая colspan на строках и столбцах)

Надо: получить из этой строки объект


Table t = new Table();
чтобы внутри были созданы все row и cell в соответствии со строкой.

Есть ли какая-либо функция/решение/утилита? Или жестко парсить вручную?

Буду очень спасибо за любые подсказки.
...
Рейтинг: 0 / 0
Преобразование тега <table></table> в объект Table t = new Table() (C#)
    #38142938
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Обычно наоборот делают через RenderControl(HtmlTextWriter). А зачем может понадобиться это?
...
Рейтинг: 0 / 0
Преобразование тега <table></table> в объект Table t = new Table() (C#)
    #38142941
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ...А зачем может понадобиться это?
Наверное, данные с чужого сайта тырить.
...
Рейтинг: 0 / 0
Преобразование тега <table></table> в объект Table t = new Table() (C#)
    #38142952
romanych3333
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShSergeМСУ...А зачем может понадобиться это?
Наверное, данные с чужого сайта тырить.

Нет. Форма имеет темплейт в виде html. Надо "aaa" и "bbb" заменить на контролы, а это в строке не знаю как сделать. А если строку преобразовать в объект, то в объект они вставляются, потом объект выкладывается на страницу.
...
Рейтинг: 0 / 0
Преобразование тега <table></table> в объект Table t = new Table() (C#)
    #38142967
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
romanych3333, а сделать .aspx c runat="server" вместо .html не вариант?
...
Рейтинг: 0 / 0
Преобразование тега <table></table> в объект Table t = new Table() (C#)
    #38142975
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
romanych3333А если строку преобразовать в объект, то в объект они вставляются, потом объект выкладывается на страницу.А если контролы зарендерить ("преобразовать" в строку), вставить в исходный html и уже html отдать клиенту?
...
Рейтинг: 0 / 0
Преобразование тега <table></table> в объект Table t = new Table() (C#)
    #38142981
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если html таблицы внешний, можно можно заюать это или это . Если свой, то я вообще не понимаю надобность подоного изврата.
...
Рейтинг: 0 / 0
Преобразование тега <table></table> в объект Table t = new Table() (C#)
    #38142982
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что за контролы-то Вы хотите вставить и зачем?
...
Рейтинг: 0 / 0
Преобразование тега <table></table> в объект Table t = new Table() (C#)
    #38142992
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А возможно html - это шаблон некой печатной формы (автор же сказал, что это Форма), который нужно заполнить данными.
Тогда вообще не понятно при чём тут какие-то контролы. Пихаем данные в строку и отдаём на клиент.
...
Рейтинг: 0 / 0
Преобразование тега <table></table> в объект Table t = new Table() (C#)
    #38143007
romanych3333
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробую объяснить (упрощенно).
Сейчас:

Table t = new Table();
TableRow r = new TableRow();
TableCell c = new TabltCell();
Label l = new Label("aaa");
c.AddControl(l);
r.Cells.Add(c);
t.Rows.Add(r);

после этого "t" вставляется в страницу.

Надо:
На входе строка:
"<table><tr><td>LABEL:aaa</td></tr></table>"

На выходе - тот же результат.
...
Рейтинг: 0 / 0
Преобразование тега <table></table> в объект Table t = new Table() (C#)
    #38143024
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
romanych3333Надо:
На входе строка:
"<table><tr><td>LABEL:aaa</td></tr></table>"

На выходе - тот же результат.
У тебя же спрашивают, зачем это надо? Что ты будешь дальше делать с этим экземплятором класса System.Web.UI.WebControls.Table?
...
Рейтинг: 0 / 0
Преобразование тега <table></table> в объект Table t = new Table() (C#)
    #38143025
romanych3333
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вставлять в страницу и показывать Юзверю. Юзверь редактирует контролы и наживает Save.
...
Рейтинг: 0 / 0
Преобразование тега <table></table> в объект Table t = new Table() (C#)
    #38143028
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
romanych3333Вставлять в страницу и показывать Юзверю.
Что мешает вставить просто сам html в литерал и иже и показывать юзверю?
...
Рейтинг: 0 / 0
Преобразование тега <table></table> в объект Table t = new Table() (C#)
    #38143048
romanych3333
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как вставить в строку Control?
Control сложный, уровня ASPxUploadFile или ASPxPageControl, например, с callback-ами?
...
Рейтинг: 0 / 0
Преобразование тега <table></table> в объект Table t = new Table() (C#)
    #38143050
Tamozhnya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
C использованием метода TemplateControl.ParseControl

И, наконец, четвертый способ. ASP.NET позволяет нам создавать контролы на основе строкового представления:
Control ctl = ParseControl("Введите что-нибудь: <asp:TextBox ID=\"txt\" runat=\"server\" />");

Несмотря на то, что подобный подход может показаться заманчивым, использовать его не стоит. Во-первых, это верный источник ошибок. Во-вторых, этот метод работает очень медленно, и чем сложнее строка, тем дольше метод работает. Поэтому ещё раз повторюсь – пользоваться этим методом не стоит, даже если очень хочется.

Полный текст статьи: http://www.gotdotnet.ru/blogs/Aib/6567/
...
Рейтинг: 0 / 0
Преобразование тега <table></table> в объект Table t = new Table() (C#)
    #38143071
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
romanych3333Как вставить в строку Control?
Control сложный, уровня ASPxUploadFile или ASPxPageControl, например, с callback-ами?
Делаешь runat="server" и добавляешь сложный контрол в серверный table.
...
Рейтинг: 0 / 0
Преобразование тега <table></table> в объект Table t = new Table() (C#)
    #38143137
romanych3333
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так объект Table надо сначала сделать. В этом то и вопрос.
...
Рейтинг: 0 / 0
Преобразование тега <table></table> в объект Table t = new Table() (C#)
    #38143148
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
romanych3333Так объект Table надо сначала сделать. В этом то и вопрос.
А в чем проблема?

Код: c#
1.
<table id="tbl" runat="server" />
...
Рейтинг: 0 / 0
Преобразование тега <table></table> в объект Table t = new Table() (C#)
    #38143205
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я не понимаю, в чем сложность формировать table (читать и добавлять)?

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
public partial class _Default : Page
{
     protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            Bind();
        }
    }

    protected void Bind()
    {
        Enumerable.Range(1, 10).ToList().ForEach(d => CreateRow<Label>("метка а " + d, "метка b " + d));
    }

    protected void CreateRow<T>(string value1, string value2) where T: Control, ITextControl, new()
    {
        var row = new HtmlTableRow();

        var cell = new HtmlTableCell();
        cell.Controls.Add(new T { Text = " метка a" });
        row.Cells.Add(cell);

        cell = new HtmlTableCell();
        cell.Controls.Add(new T { Text = " метка b" });
        row.Cells.Add(cell);

        tbl.Rows.Add(row);
    }

    protected void btnSave_Click(object sender, EventArgs e)
    {
        Bind();
        CreateRow<TextBox>("эдит а", "эдит b");
    }
} 
...
Рейтинг: 0 / 0
Преобразование тега <table></table> в объект Table t = new Table() (C#)
    #38143419
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если строка валидный xml.
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
 public class Converter
    {
        public Control Create(string str)
        {
            if (string.IsNullOrWhiteSpace(str))
                throw new ArgumentNullException("str");
            var xml = XElement.Parse(str);
            return CreateControl(xml);
        }
        Control CreateControl(XElement el)
        {
            Control c;
            switch (el.Name.LocalName.ToLower())
            {
                case "table":
                    c = new Table();                    
                    break;
                case "tr":
                    c = new TableRow();
                    break;
                case "td":
                    c = new TableCell();
                    break;
                    //тут обработка остальных возможных
                default:
                    throw new ArgumentException();
            }
            AddChildren(c, el.Elements());
            return c;
        }
        void AddChildren(Control ctr, IEnumerable<XElement> els)
        {
            foreach (var el in els)
            {
                var c = CreateControl(el);
                ctr.Controls.Add(c);
            }
        }
    }


Ну еще отдельно обработать aaa и bbb.
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Преобразование тега <table></table> в объект Table t = new Table() (C#)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]