我是一名相对较新的开发人员,全职从事IT技术工作已有大约6个月时间。感谢您阅读并/或回答我的问题。
我有一个数据绑定的重复器。在这个重复器中,我有一个网格视图、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 内进行所有操作。我有另一个页面,这段代码在那个页面中完美运行,但它不在重复器内。
本质上,我有一个带有网格视图的页面加载,并且这两个复选框更改了 SP 填充网格视图的内容。我遇到的问题是,当您取消选中复选框时(它们开始已选中),它会1.重新选中自己,并且2.不会触发 CheckedChanged 事件。
任何帮助都将非常感激。