Перебирать строки в HTML-таблице с помощью C # - PullRequest
0 голосов
/ 06 января 2010

У меня есть HTML-таблица на странице aspx (C #), которая имеет столбцы, такие как

 1.CheckBox  2.Text  3.Text  4.TextBox

Я хочу перебирать таблицу по одной строке за раз и обрабатывать (запускать хранимую процедуру на основе column2) в зависимости от того, установлен флажок или нет. Как я смогу это сделать?

Ответы [ 4 ]

5 голосов
/ 06 января 2010

Если вы используете серверный элемент управления Table, то это просто:

foreach (TableRow row in table.Rows)
    {
        var checkBox = (CheckBox)row.Cells[0].Controls[0]; //Assuming the first control of the first cell is always a CheckBox.

        if (checkBox.Checked)
        {
            var col2 = (TextBox)row.Cells[1].Controls[0];

            /* Do Stuff With col2 */
        }
        else
        {
            /* Do Stuff */
        }
    }

Если вы используете обычную HTML-таблицу (с runat = "server"), а также элементы управления HTML-формы, просто измените TableRow на HtmlTableRow, CheckBox на HtmlInputCheckBox и TextBox на HtmlInputText. Все эти элементы управления находятся в пространстве имен System.Web.UI.HtmlControls.

1 голос
/ 06 января 2010

У меня уже был некоторый удобный код VB.NET, который может это сделать. Это просто заняло небольшую настройку. Его можно легко перенести на C #.

Protected Sub Page_Load()
    FindCheckBoxes(MyTable)
End Sub

Protected Sub FindCheckBoxes(ByRef ParentControl As Control)
    For Each ctrl As Control In ParentControl.Controls
        If TypeOf ctrl Is CheckBox Then
            If DirectCast(ctrl, CheckBox).Checked Then
                ' do something
            Else
                ' do something else
            End If
        ElseIf ctrl.HasControls Then
            FindCheckBoxes(ctrl)
        End If
    Next
End Sub

Это достаточно гибко, чтобы найти флажки внутри чего-либо (не только таблицы). Тем не менее, в вашем конкретном сценарии вы можете предпочесть что-то вроде ответа noblethrasher.

Мой ответ - рекурсивный метод обхода дерева, поиск каждого флажка. Но noblethrasher's - это простой, понятный и более эффективный алгоритм, если вы знаете, в каком столбце искать флажок, и знаете, что он не скрыт внутри дополнительных контейнеров.

0 голосов
/ 06 января 2010

Если вы добавите атрибут runat = "server" к тегу таблицы в html, вы сможете увидеть таблицу как коллекцию объектов Control и сможете выполнять итерацию по ней.

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

0 голосов
/ 06 января 2010

Проверьте класс HtmlTable и его свойство Rows.

http://msdn.microsoft.com/en-us/library/system.web.ui.htmlcontrols.htmltable(VS.71).aspx

Я уверен, что это может помочь вам в пути!

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