关于asp.net:DropdownList autoposback 客户端确认后

关于asp.net:DropdownList autoposback 客户端确认后

DropdownList autoposback after client confirmation

我有一个自动回发设置为 true 的下拉列表。我想要
用户确认他们是否真的要更改该值,
回发时会触发服务器端事件(selectedindexchanged)。

我已经尝试添加一个 onchange 属性 "return confirm(\\'请点击 OK 进行更改。否则点击 CANCEL?\\';") 但无论是否确认它都不会回发
结果,如果取消,列表中的值不会恢复
选择。

当我从 DropdownList 标记中删除 onchange 属性时,页面会回发。添加 onchange 属性时不会。我还需要连接事件处理程序吗(我在 C# .Net 2.0 上)。

任何线索都会有所帮助。

谢谢!


您是否尝试将 onChange 事件设置为 javascript 函数,然后在函数内部显示 javascript 警报并在通过时使用 __doPostback 函数?

1
2
3
4
5
6
7
drpControl.Attributes("onChange") ="DisplayConfirmation();"

function DisplayConfirmation() {
  if (confirm('Are you sure you want to do this?')) {
    __doPostback('drpControl','');
  }
}

当 DropDownList 触发部分回发时,以下工作:

1
2
3
4
5
6
7
8
9
// caching selected value at the time the control is clicked
MyDropDownList.Attributes.Add(
   "onclick",
   "this.currentvalue = this.value;");

// if the user chooses not to continue then restoring cached value and aborting by returning false
MyDropDownList.Attributes.Add(
   "onchange",
   "if (!confirm('Do you want to continue?')) {this.value = this.currentvalue; return false};");


您可以通过调用执行confirm() 的javascript 函数来使用CustomValidator 控件来"验证"下拉列表:

1
2
3
4
5
6
7
8
9
10
11
12
13
        asp:DropDownList ID="TestDropDown" runat="server" AutoPostBack="true" CausesValidation="true"
            ValidationGroup="Group1"
            OnSelectedIndexChanged="TestDropDown_SelectedIndexChanged"
            asp:ListItem Value="1" Text="One" /
            asp:ListItem Value="2" Text="Two" /
        /asp:DropDownList
       script type="text/javascript"
            function ConfirmDropDownValueChange(source, arguments) {
                arguments.IsValid = confirm("Are you sure?");
            }
        /script
        asp:CustomValidator ID="ConfirmDropDownValidator" runat="server"
            ClientValidationFunction="ConfirmDropDownValueChange" Display="Dynamic" ValidationGroup="Group1"  /

1
if (!confirm('Please click OK to change. Otherwise click CANCEL?')) return false;

总是返回所以下拉列表的 OnSelectedIndexChanged 事件无论用户点击 OK 还是 CANCEL 都会触发。


如果您将 AutoPostBack 设置为 true,则覆盖 onchange 属性将不起作用,因为 ASP.NET 将始终将以下内容附加到您的 onchange 脚本的末尾:

1
;setTimeout('__doPostBack(\'YourDropDown\',\'\')', 0)

如果您将 AutoPostBack 设置为 false,则使用 "confirm and __doPostBack" 类型的脚本(见上文,err.. 下面)覆盖 onchange 将起作用,但您可能必须手动创建 __doPostBack 函数。


目前,您总是返回 confirm() 的结果,因此即使返回 true,您仍然会在回发触发之前停止执行事件。只有当 confirm() 也这样做时,您的 onchange 才应该 return false; ,如下所示:

1
if (!confirm('Please click OK to change. Otherwise click CANCEL?')) return false;

1
2
3
4
asp:DropDownList runat="server" ID="ddlShailendra"  AutoPostBack="True" OnSelectedIndexChanged="ddlShailendra_SelectedIndexChanged" onchange="javascript: { if(confirm('Click ok to prevent post back, Cancel to make a postback'))return true;}"
          asp:ListItem Text="tes" Value="1" /asp:ListItem
            asp:ListItem Text="test" Value="-1"/asp:ListItem
            /asp:DropDownList

内联编写函数,并且对于您想要回发的条件没有"返回"。这有效并且符合标准。


确保你的活动是有线的:

1
dropDown.SelectedIndexChanged += new EventHandler(dropDown_SelectedIndexChanged);

您还可以应用客户端属性来返回确认。如果取消,相应地设置索引。

1
dropDown.Attributes.Add("onchange","javascript: return confirm('confirmation msg')");


推荐阅读

    linux命令所有用户?

    linux命令所有用户?,系统,密码,信息,情况,名称,命令,用户,时间,地址,位置,如

    linux命令进入用户?

    linux命令进入用户?,系统,密码,用户,地址,信息,软件,命令,用户名,联系方式,

    linux命令用户管理?

    linux命令用户管理?,系统,密码,管理,工作,信息,地址,工具,命令,用户,基础,LIn

    linux用户与组的命令?

    linux用户与组的命令?,管理,系统,名称,用户组,密码,用户,命令,情况,信息,单

    linux添加用户的命令?

    linux添加用户的命令?,密码,系统,软件,联系方式,用户,新增,信息,管理人员,

    linux看系统用户命令?

    linux看系统用户命令?,系统,信息,密码,命令,服务,名称,网络,情况,软件,工具,L

    linux赋权用户命令?

    linux赋权用户命令?,系统,密码,用户,权限,地址,状态,数字,软件,管理,电脑,Lin

    linux组加用户命令?

    linux组加用户命令?,系统,密码,联系方式,用户,软件,管理,命令,用户名,用户

    linux命令中添加用户?

    linux命令中添加用户?,系统,密码,软件,用户,命令,信息,目录,用户名,账号,文

    linux命令更改用户?

    linux命令更改用户?,系统,密码,管理,用户,命令,环境,工作,地址,电脑,文件,lin

    linux修改用户名命令?

    linux修改用户名命令?,系统,密码,查询系统,代码,数字,用户名,命令,第三,电

    linux命令给用户授权?

    linux命令给用户授权?,系统,数字,管理,权限,命令,密码,工具,时间,软件,信息,l

    linux命令创建用户组?

    linux命令创建用户组?,系统,代码,密码,用户组,用户,命令,信息,名称,新增,管

    linux命令给用户授权?

    linux命令给用户授权?,系统,数字,管理,权限,命令,密码,工具,时间,软件,信息,l

    linux命令创建用户组?

    linux命令创建用户组?,系统,代码,密码,用户组,用户,命令,信息,名称,新增,管

    查看linux用户命令行?

    查看linux用户命令行?,信息,系统,时间,名称,密码,用户,命令,地址,状态,设备,L

    linux所有用户命令行?

    linux所有用户命令行?,系统,信息,地址,工作,密码,命令,用户,时间,电脑,管理,L

    linux用户下的命令是?

    linux用户下的命令是?,系统,工作,管理,地址,命令,密码,基础,信息,目录,新增,L

    linux用户登录的命令?

    linux用户登录的命令?,系统,信息,工作,地址,时间,密码,名称,命令,电脑,软件,l