在Asp.Net中显示确认消息是或否

时间:2014-02-07 15:33:51

标签: c# javascript asp.net

我有一个下拉框,用户可以选择是或否,如果用户从下拉列表中选择是,那么我想显示一个显示是或否选项的确认框。如果只有用户在确认框中选择是,那么我想继续调用我的其他功能,该功能对后端数据库进行更新。如果用户在确认框中选择“否”,则我不想继续并取消操作。这是我的下拉代码:

OnSelectedIndexChanged="CheckDropDownSelection"
                        runat="server" AppendDataBoundItems="true" Height="16px">
                        <asp:ListItem Text="-- Please Selet --" Value="-- Please Selet --"></asp:ListItem>
                        <asp:ListItem Text="YES" Value="YES"></asp:ListItem>
                        <asp:ListItem Text="NO" Value="NO"></asp:ListItem>
                    </asp:DropDownList>

这是我的代码背后:

protected void CheckDropDownSelection(Object sender, EventArgs e)
    {

        if (ddl_CloseTask.SelectedValue == "YES")
        {
            CloseTask();
        }
        else
        { 

        }

    }

    protected void CloseTask()
    { 

        // here is where i close the task

    }

3 个答案:

答案 0 :(得分:3)

阅读我关于其的完整帖子:Calling Server Side function from Client Side Script

这是使用服务器端和客户端代码实现的方法

主要在page_load中附加客户端代码事件

yourDropDownList.Attributes["onChange"] = "jsFunction(this);";

客户端脚本

function jsFunction(mlist){
  var myselect = mlist;
  if(myselect.options[myselect.selectedIndex].value == "YES")
  {
    if(confirm("Delete item!"))
    {
      $.ajax({
       type:"POST",
         url: window.location.pathname + "/CloseTask";,
           data: dataString,
          contentType:"application/json; charset=utf-8",
            dataType:"json",
         error:
                  function(XMLHttpRequest, textStatus, errorThrown) {
                         $(errorlableid).show();
                         $(errorlableid).html("Error");
                  },
         success:
             function(result) {

                }
         }
         }
      });
    }
  }
}

服务器端代码

[WebMethod]
protected void CloseTask()
{
    //code to close task

}

答案 1 :(得分:1)

代码太多是/否。我希望它不会混淆用户 -

如果用户在 DropDownList 中选择 YES ,系统会提示确认消息

如果用户在确认消息中选择 DropDownList 将回发给服务器。

<asp:DropDownList ID="ddl_CloseTask" Width="157px" 
   AutoPostBack="true" 
   OnSelectedIndexChanged="CheckDropDownSelection"
   runat="server" 
   AppendDataBoundItems="true" Height="16px">
   <asp:ListItem Text="-- Please Selet --" Value="-- Please Selet --"></asp:ListItem>
   <asp:ListItem Text="YES" Value="YES"></asp:ListItem>
   <asp:ListItem Text="NO" Value="NO"></asp:ListItem>
</asp:DropDownList>

<script type="text/javascript">
    var selectlistId = '<%= ddl_CloseTask.ClientID %>',
        selectlist = document.getElementById(selectlistId);

    selectlist.onchange = function() {
        if (selectlist.options[selectlist.selectedIndex].value == "YES") {
            if (confirm("Are you sure you want to do this?")) {
                __doPostBack(selectlistId, '');
            }
        }
    };
</script>

归功于this answer

更新

如果用户从确认框中选择,请将 DropDownList 值设置为第一个值。

<script type="text/javascript">
    var selectlistId = '<%= ddl_CloseTask.ClientID %>',
        selectlist = document.getElementById(selectlistId);

    selectlist.onchange = function() {
        if (selectlist.options[selectlist.selectedIndex].value == "YES") {
            if (confirm("Are you sure you want to do this?")) {
                __doPostBack(selectlistId, '');
            } else {
                // User selected NO, so change DropDownList back to 0.
                selectlist.selectedIndex = 0;
            }
        }
    };
</script>

答案 2 :(得分:1)

您可能希望在DropDownList控件的“onchange”事件中提示用户。您可以在aspx标记或后面的代码中添加对javascript函数的调用。 (在这种情况下,我使用了背后的代码)。

所以,你的代码背后会是这样的:

protected void Page_Load( object sender, EventArgs e )
{
    ddl_CloseTask.Attributes.Add("onchange", "return validate(this);");
}

protected void CheckDropDownSelection(object sender, EventArgs e)
{
    if (ddl_CloseTask.SelectedValue == "YES")
    {
        CloseTask();
    }
    else
    {
        // do stuff
    }
}

private void CloseTask()
{
    // do stuff
}

你的aspx标记看起来像这样:

<asp:DropDownList ID="ddl_CloseTask" runat="server" AutoPostBack="True" OnSelectedIndexChanged="CheckDropDownSelection">
    <asp:ListItem Text="-- Please Select --" Value="-- Please Select --" />
    <asp:ListItem Text="YES" Value="YES" />
    <asp:ListItem Text="NO" Value="NO" />
</asp:DropDownList>

<script type="text/javascript">
    function validate(ddl) {
        var selected = ddl.options[ddl.selectedIndex].value;

        if (selected == 'YES' && !confirm('Close the task?')) {
            return false;
        }

        __doPostBack(ddl.id, '');
    }
</script>