Я застрял на странице ASP.DataBound ASP: события CheckBox не запускаются, как ожидалось, из-за DataBinding, возникающих на странице_Load()
Страница содержит ASP: Контейнер, содержащий несколько CheckBoxes. Мне нужно добавить событие в эти CheckBoxes OnCheckChange, поэтому всякий раз, когда мы нажимаем один из CheckBox, он отключает все остальные флажки. Я мог бы использовать RadioButton, но использование CheckBoxes имеет другие преимущества для меня, которые выходят из этой темы, поэтому я не хочу использовать радиокнопки.
Это было theorically нормально работать так же, как это:
<ASP:Repeater id="MyRepeater" runat="server" OnItemDataBound="MyRepeater_ItemDataBound">
<ItemTemplate>
<asp:CheckBox id="MyCB" runat="server" OnCheckedChanged="MyCB_CheckedChanged" AutoPostBack="true" />
<br/>
</ItemTemplate>
</ASP:Repeater>
и в коде позади:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
MyRepeater.DataSource=DS;
MyRepeater.DataBind();
}
}
protected void MyCB_CheckedChanged(object sender, EventArgs e)
{
UncheckallOtherCheckBoxes();
}
Однако, есть и другие регионы этой страницы, чтобы работать, как и ожидалось, у меня есть для привязки DataSource при каждой загрузке страницы, а не только в первый раз. Так мне нужно изменить Page_Load к
protected void Page_Load(object sender, EventArgs e)
{
// if (!IsPostBack)
{
MyRepeater.DataSource=DS;
MyRepeater.DataBind();
}
}
И это вызывает все на провал! :) Потому что, когда я нажимаю на флажок, он запускает Page_Load перед MyCB_CheckedChanged(). Сначала это DataBinds, и поэтому привязка данных отправляет некоторые флажки, которые не являются событиями, выполняемыми пользователем.
Есть ли способ решить эту проблему?
Thx заранее.
1. УВЕРЕНА, что вам нужно переустанавливать базу данных каждый раз, когда страница загружается? Это немного необычно - если вы хотите объяснить свои причины, это может помочь другим лучше понять. –
@Sandy: Я думаю, потому что контейнер, упомянутый в позе, вложен в другой контейнер. Если я не перевязываю мастер-контейнер на PostBack, я заметил, что у всех дочерних контейнеров нет данных. –