我是一个相对较新的开发人员,只是做这个做了大约6个月的全职没有发射,所以预先感谢您的阅读和/或回应我的问题OnCheckedChanged事件时复选框中继器内进行检查
我有一个数据绑定中继器。在这个转发器里面,我有一个gridview,SQLDS和2个复选框。这两个复选框都有一个OnCheckedChanged事件,AutoPostback设置为true。中继器也有一个OnItemDataBound事件。
这里是我的代码是如何布局的一个样本:
<asp:Repeater ID="Repeater1" OnItemDataBound="Repeater1_ItemDataBound">
<ItemTemplate>
<asp:Panel>
<asp:UpdatePanel>
<ContentTemplate>
<asp:Checkbox ID="Checkbox1" Autopostback="True" OnCheckedChanged="CheckBox1_CheckedChanged">
<asp:Checkbox ID="Checkbox2"Autopostback="True" OnCheckedChanged="CheckBox2_CheckedChanged">
<asp:Gridview ID="Gridview1" DataSourceID="SqlDataSource1">
<asp:SQLDataSource ID="SQLDataSource1" SelectCommand="SP1" SelectCommandType="StoredProcedure">
</ContentTemplate>
</asp:UpdatePanel>
</asp:Panel>
</ItemTemplate>
</asp:Repeater>
和C#
protected void Checkbox1_CheckedChanged(object sender, EventArgs e)
{
if (Checkbox1.Checked == true)
{
if (Checkbox2.Checked == true)
SqlDataSource1.SelectCommand = "SP1";
else
SqlDataSource1.SelectCommand = "SP2";
}
else
SqlDataSource1.SelectCommand = "SP3";
}
protected void Checkbox2_CheckedChanged(object sender, EventArgs e)
{
if (Checkbox2.Checked == true)
{
if (Checkbox1.Checked == true)
SqlDataSource1.SelectCommand = "SP3";
else
SqlDataSource1.SelectCommand = "SP2";
}
else
SqlDataSource1.SelectCommand = "SP1";
}
protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
//Uses FindControl to Databind the GV and hides it if GV.Rows.Count==0
}
我做这一切的AJAX的TabPanel内。我有另一个页面,这个代码完美的工作,但它不在另一个页面的中继器内。
本质上,我有一个页面加载gridview,并且两个复选框更改SP填充gridview。我遇到的问题是,当您取消选中复选框(他们开始检查)时,它会1.重新检查自身,并且2.不会触及CheckedChanged事件。
任何帮助将非常感激。
我没有看到链接到eventhandlers和autpostback设置为true的复选框。你能证明你在做什么吗? –
是的,对不起。它们在ASP标签中被设置为这样。 – RockiesMagicNumber