【问题标题】:Checkbox not firing in Gridview with javascript message复选框未在带有 javascript 消息的 Gridview 中触发
【发布时间】:2018-12-03 13:14:06
【问题描述】:

我在网格视图中有一个复选框。 在 CheckChanged 事件中,它向数据库发送更新。它工作正常,直到我添加一条消息询问用户是否要继续。

单击复选框时,会显示消息,用户单击 OK 并且不会触发 checkchanged 事件。但是,当页面刷新时,会触发 checkchanged 事件。

我尝试了很多组合,但似乎没有任何效果。

这是带有 2 个复选框的网格视图:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" CellSpacing="0" GridLines="None" PageSize="20"
ShowStatusBar="false" ShowFooter="False" ShowHeader="false" DataKeyNames="RowType, QID"
AllowFilteringByColumn="false" AllowPaging="false" AllowSorting="false" ShowGroupPanel="false" Skin="" Width="100%"
CssClass="GVResult" SelectedItemStyle-CssClass="SelectedStyle" RenderMode="Lightweight"
OnRowDataBound="GV_ItemDataBound" OnRowCommand="GV_RowCommand">
<Columns>
    <asp:TemplateField Visible="true" ItemStyle-HorizontalAlign="Left" HeaderStyle-Width="10%">
        <ItemTemplate>
            <asp:Label ID="lblQuestionNo" Text='<%# Eval("QuestionNo") %>' runat="Server" CssClass='<%# Eval("CSS") %>' Enabled="False" />
            <asp:HiddenField ID="hfQID" runat="Server" Value='<%# Eval("QID") %>' />
        </ItemTemplate>
    </asp:TemplateField>
    <asp:TemplateField Visible="true" ItemStyle-HorizontalAlign="Left" HeaderStyle-Width="10%">
        <ItemTemplate>
            <asp:Label ID="lblMarker1" Text='<%# Eval("Marker1") %>' runat="Server" CssClass='<%# Eval("CSS") %>' Enabled="true" />
            <asp:CheckBox ID="ckMarker1" Checked='<%# Eval("CheckMarker1") %>' runat="Server" AutoPostBack="true" OnCheckedChanged="ckMarker_CheckedChanged" />
        </ItemTemplate>
    </asp:TemplateField>
    <asp:TemplateField Visible="true" ItemStyle-HorizontalAlign="Left" HeaderStyle-Width="10%">
        <ItemTemplate>
            <asp:Label ID="lblMarker2" Text='<%# Eval("Marker2") %>' runat="Server" CssClass="Label_100_White" Enabled="False" />
            <asp:CheckBox ID="ckMarker2" Checked='<%# Eval("CheckMarker2") %>' runat="Server" Enabled="true" AutoPostBack="true" OnCheckedChanged="ckMarker_CheckedChanged" />
        </ItemTemplate>
    </asp:TemplateField>
</Columns>
</asp:GridView>

复选框的消息被添加到gridview RowDataBound:

protected void GV_ItemDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row is GridViewRow & e.Row.RowType == DataControlRowType.DataRow)
        {
            GridViewRow Item = e.Row as GridViewRow;

            CheckBox ckMarker1 = (CheckBox)e.Row.FindControl("ckMarker1");
            CheckBox ckMarker2 = (CheckBox)e.Row.FindControl("ckMarker2");

	ckMarker1.Attributes.Add("onclick", "javascript: var answer = confirm('Do you want to proceed with the changes');return answer;");	
	ckMarker2.Attributes.Add("onclick", "javascript: var answer = confirm('Do you want to proceed with the changes');return answer;");            }
    }

这是复选框更改事件: 它不是在显示消息后触发,而是在页面刷新时触发。

protected void ckMarker_CheckedChanged(object sender, EventArgs e)
{
    DTO.FinalMarkingUpdate f = new DTO.FinalMarkingUpdate();
    BLL.AllocMQuestion F = new BLL.AllocMQuestion();
    CheckBox ck = (CheckBox)sender;
    GridViewRow Item = (GridViewRow)ck.NamingContainer;

    f.OrgID = this.OrgID;
    f.AssessID = this.AssessID;
    f.MarkerNo = int.Parse(ck.ID.Substring(8, 1));
    f.QID = int.Parse(((HiddenField)Item.FindControl("hfQID")).Value);
    f.IsMarker = ck.Checked;
    F.UpdateMarkerAndChecker(f);

    DataSource();
}

【问题讨论】:

  • 您的gridview 是否在任何updatepanel 中?
  • 是的,gridview 在更新面板中

标签: javascript asp.net gridview


【解决方案1】:

添加如下属性以使其工作。它将返回true 确认dialogbox 确定点击并返回false 确认dialogbox 取消点击。

protected void GV_ItemDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row is GridViewRow & e.Row.RowType == DataControlRowType.DataRow)
        {
            GridViewRow Item = e.Row as GridViewRow;

            CheckBox ckMarker1 = (CheckBox)e.Row.FindControl("ckMarker1");
            CheckBox ckMarker2 = (CheckBox)e.Row.FindControl("ckMarker2");

            ckMarker1.Attributes.Add("onclick", "if (!confirm('Do you want to proceed with the changes')) return false;");
            ckMarker2.Attributes.Add("onclick", "if (!confirm('Do you want to proceed with the changes')) return false;");
        }
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 2012-02-04
    • 2011-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多