0
我試圖在複選框中使用複選框獲取兩個主類別,但我沒有問題,但是當我嘗試在同一個數據庫表上使用Checkbox.CheckChanged時獲取子類別時,首先複選框爲沒有反應,但第二個工作沒有任何問題。我們如何解決這種情況?Repeater中的複選框
Checbox Filtering可能不太好,但仍需要修復。
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;
}
}
}
當我點擊主複選框,然後我得到的ID號碼,並試圖顯示subcheckbox與這種關係。
你能看出什麼是錯?你有更好的主意去做嗎?