【发布时间】:2020-03-20 03:59:24
【问题描述】:
我在几个地方找到了这个问题,但没有解决方案......
我在网格视图中有一个复选框:
<asp:TemplateField HeaderText="Closed?">
<ItemTemplate >
<asp:CheckBox ID="Status_CB" runat="server" AutoPostBack="true"
OnCheckedChanged="Status_CB_CheckedChanged"
EnableViewState="true" ViewStateMode="Enabled"
Checked='<%# Convert.ToString(Eval("cStatus")) == "1" ? true : false %>'/>
</ItemTemplate>
</asp:TemplateField>
代码隐藏:
protected void Page_Load(object sender, EventArgs e) {
if (!int.TryParse(Session["FacilityID"].ToString(), out FId)) {
FId = 0;
}
if (!Page.IsPostBack) {
if (!string.IsNullOrEmpty(Request.QueryString.Get("WorkCenter"))) {
wc = Request.QueryString.Get("WorkCenter");
WorkcenterHeader.InnerText = wc + " Schedule ";
HiddenWorkCenter.Value = c;
}
if (!SQLHasData()) {
SavePrioritiesToSQL();
}
BindGrid();
}
}
protected void Status_CB_CheckedChanged(object sender, EventArgs e) {
CheckBox cb = (CheckBox)sender;
GridViewRow row = (GridViewRow) cb.Parent.Parent;
}
当我最初选中该框时,它可以工作。当我取消选中它时,我在 Status_CB_CheckedChanged 第一行的断点根本不会触发。
我错过了什么有人知道吗?
UPDATE - 这是表格,它是嵌套的。我想知道这是否是它不会在取消选中时调用回发的原因......
更新 - 好的,我放弃了,这一定是 asp 中嵌套 gridview 的错误,所以如果你有嵌套 gridview,我建议不要使用复选框。我将我的切换到 cStatus“打开”或“关闭”的文本字段,并使用带有命令参数的按钮,即行索引:
<asp:GridView ID="JobInfo_GV" runat="server" AutoGenerateColumns="false" CssClass="ChildGrid2" OnRowCommand="JobInfo_GV_RowCommand">
<asp:BoundField DataField="cStatus" HeaderText="Status" ReadOnly="True" HeaderStyle-CssClass="center-row" ItemStyle-CssClass="center-row"/>
<asp:TemplateField HeaderText="Update">
<ItemTemplate >
<asp:Button id="UpdateClosed" commandname="Select" buttontype="button" Text="ToggleStatus" runat="server" CommandArgument='<%# Container.DataItemIndex %>'/>
</ItemTemplate>
</asp:TemplateField>
然后是 C#:
protected void JobInfo_GV_RowCommand(object sender, GridViewCommandEventArgs e) {
var grid = (GridView)sender;
var errorMessage = string.Empty;
if (grid != null) {
int index = 0;
if (int.TryParse(e.CommandArgument.ToString(), out index) ){
GridViewRow row = grid.Rows[index];
【问题讨论】:
-
我测试了你的代码。它工作得很好!能否请您发布完整的 aspx 和 c# 代码?
-
我想知道是不是因为gridview是gridview中的templateview然后...
-
请检查我的答案并将其与您的代码进行比较。我的回答如你所愿。
-
已更新以添加我的完整表格。您的解决方案有效,直到我将其包装在表格中然后它失败了
-
您需要为 Checkbox 控件设置 AutoPostBack="true"。您的原始代码有,但您的新代码没有!不是这个问题吗?