2016-02-05 12 views
0

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

Фильтр Checbox может быть не очень хорошим, но его все еще нужно исправить.

list.aspx

<asp:Repeater ID="rptcat" runat="server"> 
     <ItemTemplate> 
      <ul> 
       <li> 
        <asp:CheckBox ID="main_cat" runat="server" type="checkbox" OnCheckedChanged="main_cat_CheckChanged" AutoPostBack="True" Text='<%# Eval("cat_name") %>' data-id='<%# Eval("cat_id") %>' />            
       </li>   
      </ul> 
     </ItemTemplate> 
</asp:Repeater> 

<asp:Repeater ID="sub_cat" runat="server"> 
     <ItemTemplate> 
      <ul> 
       <li>        
        <input runat="server" id="subcheck" type="checkbox" class="icheck" AutoPostBack="True" Text='<%# Eval("cat_name") %>' />          
       </li>   
      </ul> 
     </ItemTemplate> 
</asp:Repeater> 

list.aspx.cs

public void bring_cat() 
{ 
    DataSet dscat = conn.bringit("Select * from categories where sub_id=1"); 
    rptcat.DataSource = dscat.Tables[0].DefaultView; 
    rptcat.DataBind(); 
    subcheck.Visible = false; 
} 

protected void main_cat_CheckChanged(object sender, System.EventArgs e) 
{ 
    foreach (RepeaterItem aItem in rptcat.Items) 
    { 
     CheckBox main_cat = (CheckBox)aItem.FindControl("main_cat"); 
     var id = main_cat.Attributes["data-id"]; 
     if (main_cat.Checked == true) 
     { 
       DataSet ds_sub_cat = conn.bringit("Select * from categories where sub_id="+id); 
       sub_cat.DataSource = ds_sub_cat.Tables[0].DefaultView; 
       sub_cat.DataBind(); 
       sub_cat.Visible = true; 
       subcheck.Visible = true; 
      } 
      else 
      { 
       sub_cat.Visible = false; 
       subcheck.Visible = false; 
      } 
    } 
} 

Когда я нажал на главном флажком, то я получаю номер документа и пытается показать subcheckbox с это отношение.

Не могли бы вы видеть, что не так? У вас есть идея?

ответ

0

Хорошо, я решил свою проблему. Надеюсь, это поможет вам.

Если вы пытаетесь получить идентификационный номер непосредственно из флажка, то вы можете видеть, что он не работает отлично. Решение прост. Добавьте скрытый контроль поля после галочки в репитере или datalist и установите значение = "< #Eval (" cat_id ")" на номер id. теперь вы можете получить номер id из кода позади без какой-либо проблемы с количеством.

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