Как получилось, что FindControl может найти элемент управления, который не принадлежит текущей строке таблицы?

#asp.net #html-table #row #findcontrol

#asp.net #html-таблица #строка #findcontrol

Вопрос:

У меня есть таблица. Мне нужно найти все элементы управления DropDownList в таблице. Я написал следующий код для перебора строк таблицы, чтобы найти элементы управления выпадающего списка. Как получилось, что в каждом цикле я мог найти выпадающий список, даже если у меня есть только в строке 4?

     for (int i = 0; i < table1.Rows.Count; i  )
                {                
                    foreach (string UserID in UserIDs)
                    {
                        string ddlID = "ddlEditings"   UserID;
                        DropDownList ddl = (DropDownList)table1.Rows[i].FindControl(ddlID);
                        if (ddl != null)
                        {
                            if (!updateableUsers.ContainsKey(Int32.Parse(UserID)))
                                updateableUsers.Add(Int32.Parse(UserID), Int32.Parse(ddl.SelectedValue));
                        }

                    }
                }
  

Разметка

     <table id="ctl00_ContentPlaceHolder1_table1" border="1" width="100%">
            <tr>
                <td align="center" width="100%" colspan="3" bgcolor="#C0C0C0"><br /></td>
            </tr>
            <tr>
                <td align="center" width="7%" bgcolor="#C0C0C0"></td>
                <td align="center" width="50%" bgcolor="#CCE6FF">User Name</td>

                <td align="center" width="43%" bgcolor="#CCE6FF">Editing Privileges</td>
            </tr>
            <tr>
                <td align="center" width="7%" bgcolor="#C0C0C0"></td>
                <td width="50%" bgcolor="#CCE6FF">Ferguson, Gene</td>
                <td align="left" width="43%" bgcolor="#CCE6FF">functional manager</td>
            </tr>

            <tr>
                <td align="center" width="7%" bgcolor="#C0C0C0"><input type="submit" name="ctl00$ContentPlaceHolder1$btnDelete5439" value="Delete" onclick="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(amp;quot;ctl00$ContentPlaceHolder1$btnDelete5439amp;quot;, amp;quot;amp;quot;, true, amp;quot;amp;quot;, amp;quot;amp;quot;, false, false))" id="ctl00_ContentPlaceHolder1_btnDelete5439" /></td>
                <td width="50%" bgcolor="#CCE6FF">Lento, Jackie</td>
                <td align="left" width="43%" bgcolor="#CCE6FF"><select name="ctl00$ContentPlaceHolder1$ddlEditings5439" id="ctl00_ContentPlaceHolder1_ddlEditings5439">
                    <option selected="selected" value="2">comments only</option>
                    <option value="1">view</option>

                </select></td>

            </tr>
            <tr bgcolor="#C0C0C0">
                <td width="100%" align="center" colspan="3"><input type="submit" name="ctl00$ContentPlaceHolder1$btnSubmit" value="Update" onclick="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(amp;quot;ctl00$ContentPlaceHolder1$btnSubmitamp;quot;, amp;quot;amp;quot;, true, amp;quot;amp;quot;, amp;quot;amp;quot;, false, false))" id="ctl00_ContentPlaceHolder1_btnSubmit" /><input type="submit" name="ctl00$ContentPlaceHolder1$btnReset" value="Reset" onclick="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(amp;quot;ctl00$ContentPlaceHolder1$btnResetamp;quot;, amp;quot;amp;quot;, true, amp;quot;amp;quot;, amp;quot;amp;quot;, false, false))" id="ctl00_ContentPlaceHolder1_btnReset" /><br /></td>
            </tr>
        </table>
  

Комментарии:

1. Можете ли вы включить разметку для своей таблицы (не вывод)?

2. Кстати, эта таблица создается динамически.

3. Если он динамический, включите код, который генерирует таблицу.

Ответ №1:

вы можете сделать так… чтобы найти все элементы управления в таблице html….

         foreach(HtmlTableRow tr in Table1.Rows)
        {
            foreach(HtmlTableCell td in tr.Cells)
            {
                foreach(Control c in td.Controls)
                {
                    Response.Write(c.ID);
                }
            }
        }