2013-03-28 2 views
0

Я создал веб-страницу, которая динамически создает таблицу. один из столбцов в таблице - это флажок с идентификатором (int). Я хочу использовать идентификаторы всех проверенных коробок в SQL Query так:Как получить список идентификаторов флажков

select * 
from table 
where ID in (1,2,3,4) 

есть способ, что я могу получить список идентификаторов из всех проверяемых коробки?

Я использую C# .Net

вот фрагмент кода им, используя для создания флажок:

foreach (DataRow dr in dt.Rows) 
{ 
    string Compatible_Controls = (
     "<tr>" + 
     "<td><input type='CheckBox' ID='" +(dr["id"]) + "' /></td>" + 
     "<td>" + (dr["Control_Name"]) + "</td>" + 
     "<td>" + (dr["Control_Statement"]) + "</td>" + 
     "<td>" + (dr["Regulation_type"]) + "</td>" + 
     "</tr>); 

Вот что генерируется:

<tr> 
    <td><input type='CheckBox' ID='3' /></td> 
    <td>xxxxxx</td> 
    <td>xxxxxxxxx</td> 
    <td>xxxxxxxx</td> 
</tr> 

спасибо очень!!!!!

+0

Это веб-страница ASP.net? – Melanie

+1

Будет проще, если вы покажете нам немного кода, который вы используете для создания веб-страницы, или HTML, который отображается в браузере. – egrunin

ответ

0

Этот код не тестировалось, но основная логика должна быть правильной. Идея состоит в том, чтобы перебрать все элементы управления на странице, выбирая те, чей идентификатор начинается с префикса набора.

Во-первых, поставить префикс перед числовыми идентификаторами:

string ID_Prefix = "MyCheckbox_"; 

string Compatible_Controls = (
       "<tr>" + 
         "<td><input type='CheckBox' ID='" + ID_prefix 
           + (dr["id"]) + "' /></td>" + 
         "<td>" + (dr["Control_Name"]) + "</td>" + 
         "<td>" + (dr["Control_Statement"]) + "</td>" + 
         "<td>" + (dr["Regulation_type"]) + "</td>" + 
       "</tr>); 

Это будет создавать HTML как это:

<td><input type='CheckBox' ID='MyCheckbox_3' /></td> 

Теперь называем это, когда вы хотите, чтобы разобрать страницу:

List<string> GetMyCheckboxes(ControlCollection coll, List<string> ids) 
{ 
    foreach (Control ctl in coll) 
    { 
     if (ctl.ID.StartsWith(ID_Prefix)) 
      ids.Add(ctl.ID.Substring(ID_Prefix.Length)); // only take the number 

     if (ctl.Controls.Count > 0) 
      ids = GetInputs(ctl.Controls, ids); 
    } 
    return ids; 
} 

Назовите это так:

List<string> ids = GetMyCheckboxes(Page.Controls, new List<string>()); 

В итоге вы получите список, содержащий только идентификаторы.

0

Если вы назовете все флажки одинаковыми, установите значение этого флажка как идентификатор, и ваш контроллер примет список int, он вернет флажки, которые были отмечены.

Как это:

Вид:

<input type='checkbox' name='check' value='1'> 
<input type='checkbox' name='check' value='2'> 
<input type='checkbox' name='check' value='3'> 
<input type='checkbox' name='check' value='4'> 

Контроллер:

public ActionResult CheckBoxes(IList<int> checkIds) 
{ 
    //checkIds will contain the "value" of all the checkboxes that are checked when the form is submitted. 
} 
+0

Он, кажется, говорит, что все флажки имеют разные идентификаторы. – egrunin

+0

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

+0

Melanie, Да, это страница asp.net. Taylonr, будет ли это работать за пределами MVC? – user2219930

Смежные вопросы