使用ok / cancel确认对话框

时间:2012-04-09 16:39:38

标签: c# asp.net webforms

我正在使用WebForms GridView控件。当用户单击某行上的“更新”时,我想检查他们输入的值与其他一些记录。

由此,如果我返回true,我想显示一个确认对话框,询问用户是否要继续更新。

javascript确认对话框可能无法正常工作,因为只有当输入的值符合特定条件时,我并不总是希望显示此对话框。

有什么建议吗?

2 个答案:

答案 0 :(得分:2)

我建议使用RowDataBound事件检查这些条件,并在需要时添加确认对话框。

编辑:比较日期,如果不同则显示确认

请参阅此jsFiddle进行演示。

<script type="text/javascript">        
   validateInput = function(inputDate, compareDate, confirmButtonID) {           
       var confirmButton = document.getElementById(confirmButtonID);       
       if (confirmButton) {               
           $(confirmButton).one("click", function() {
               var result = dates.compare(inputDate, compareDate);
               if (result != 0){ //change to suit your needs
                   return confirm("Are you sure you want to save these changes?");        
               }
               return true;
           });                                                                                 
       }
    }             
</script>

以下是用于比较的dates类的代码(link):

<script type="text/javascript">
    var dates = {
        convert:function(d) {
            return (
                d.constructor === Date ? d :
                d.constructor === Array ? new Date(d[0],d[1],d[2]) :
                d.constructor === Number ? new Date(d) :
                d.constructor === String ? new Date(d) :
                typeof d === "object" ? new Date(d.year,d.month,d.date) :
                NaN
            );
        },
        compare:function(a,b) {
            return (
                isFinite(a=this.convert(a).valueOf()) &&
                isFinite(b=this.convert(b).valueOf()) ?
                (a>b)-(a<b) :
                NaN
            );
        },
        inRange:function(d,start,end) {
           return (
                isFinite(d=this.convert(d).valueOf()) &&
                isFinite(start=this.convert(start).valueOf()) &&
                isFinite(end=this.convert(end).valueOf()) ?
                start <= d && d <= end :
                NaN
            );
        }
    }
</script>

RowDataBound的{​​{1}}事件中,为每行分配GridView函数:

onchange

jQuery确认对话

如果您需要比常规JavaScript确认对话框更灵活的内容,则可以更改上述内容以使用jQuery UI Dialog作为确认。

答案 1 :(得分:0)

如果您使用的是WebForms(?),则需要向GridView模板添加一些验证控件。

以下是example from MSDN使用CompareValidator

<EditItemTemplate>
    <asp:TextBox ID="EditUnitPrice" runat="server"
      Text='<%# Bind("UnitPrice", "{0:c}") %>'
      Columns="6"></asp:TextBox>
    <asp:CompareValidator ID="CompareValidator1" runat="server"
        ControlToValidate="EditUnitPrice"
        ErrorMessage="The price must be greater than or equal to zero and
                       cannot include the currency symbol"
        Operator="GreaterThanEqual" Type="Currency"
        ValueToCompare="0">*</asp:CompareValidator>
</EditItemTemplate>