C# 回发后Asp.net复选框问题
这是一个带有C的asp.net项目# 我有一个C# 回发后Asp.net复选框问题,c#,asp.net,checkbox,postback,C#,Asp.net,Checkbox,Postback,这是一个带有C的asp.net项目# 我有一个GridView,它有一个复选框列。用户通过单击相应的复选框选择一行。然后他们可以通过做各种事情(主要是点击按钮)来处理这一行。我遇到的问题是,当用户单击按钮时,gridview会刷新。大多数情况下,这包括删除一行。当用户选择另一个复选框(gridview中的另一行)进行操作时,您可以短暂地看到它选中该复选框,然后立即取消选中该复选框,或者选中他们要选择的复选框下方的复选框。发生这种情况时,onCheckedChanged不会触发。但是,当我刷新页面
GridView
,它有一个复选框列。用户通过单击相应的复选框选择一行。然后他们可以通过做各种事情(主要是点击按钮)来处理这一行。我遇到的问题是,当用户单击按钮时,gridview会刷新。大多数情况下,这包括删除一行。当用户选择另一个复选框(gridview中的另一行)进行操作时,您可以短暂地看到它选中该复选框,然后立即取消选中该复选框,或者选中他们要选择的复选框下方的复选框。发生这种情况时,onCheckedChanged
不会触发。但是,当我刷新页面时,选择和取消选择复选框的效果与预期一样,没有任何问题
正如一些旁注:
CheckBox activeCheckBox = sender as CheckBox;
foreach (GridViewRow rw in GridView1.Rows)
{
CheckBox chkBx = (CheckBox)rw.FindControl("RowLevelCheckBox1");
if (chkBx != activeCheckBox)
{
chkBx.Checked = false;
}
else if (chkBx == activeCheckBox && (chkBx.Checked != false && activeCheckBox.Checked != false))
{
chkBx.Checked = true;
}
}
autopostback=“true”
复选框。checked=false
,但当我调试并选中页面加载上gridview中的所有复选框时,在执行所有代码后,仍显示选中了一个复选框
为什么会发生这种行为?您发布的代码是在回发之前还是在回发之后被命中的。。?您是否在
Page\u Load
部分以及发布代码的部分中放置了断点?我同意MethodMan的观点,您需要验证页面事件的触发顺序(Init、Load、Render)还可以尝试禁用复选框控件上的viewstate。@MethodMan该代码位于CheckedChangedEvent中,它仅在复选框被选中或未选中时才会被命中……据推测。在我提到的情况下,它不会被击中。我几乎在所有地方都设置了断点,但似乎找不到问题所在。@MethodMan啊,我明白你的意思了。这段代码似乎是在回发之后被点击的。如果我在页面加载和该事件上设置断点。页面加载发生在事件发生之前。这是有意的吗?似乎删除行复选框的viewstate(当时该复选框会被选中)正被带到它上面的行(如果删除行下面没有任何行)或它正被带到下面的行(如果删除行下面有行)。如何将该复选框的viewstate完全清除,使其不会移动到GridView
中的任何其他复选框?在重新绑定网格视图之前设置.Checked
字段似乎没有任何作用。有人知道吗?你发布的代码是在回发之前还是之后被点击的。。?您是否在Page\u Load
部分以及发布代码的部分中放置了断点?我同意MethodMan的观点,您需要验证页面事件的触发顺序(Init、Load、Render)还可以尝试禁用复选框控件上的viewstate。@MethodMan该代码位于CheckedChangedEvent中,它仅在复选框被选中或未选中时才会被命中……据推测。在我提到的情况下,它不会被击中。我几乎在所有地方都设置了断点,但似乎找不到问题所在。@MethodMan啊,我明白你的意思了。这段代码似乎是在回发之后被点击的。如果我在页面加载和该事件上设置断点。页面加载发生在事件发生之前。这是有意的吗?似乎删除行复选框的viewstate(当时该复选框会被选中)正被带到它上面的行(如果删除行下面没有任何行)或它正被带到下面的行(如果删除行下面有行)。如何将该复选框的viewstate完全清除,使其不会移动到GridView
中的任何其他复选框?在重新绑定网格视图之前设置.Checked
字段似乎没有任何作用。有人知道吗?