2013-02-21 70 views
0
RadInputPrompt.Show("Enter the number", MessageBoxButtons.OK, message, InputMode.Text, textBoxStyle, closedHandler: (arg) => 
{ 
    int okButton = arg.ButtonIndex; 
    if (okButton == 0) 
    { 

      //do some check before submit 
      if (string.IsNullOrEmpty(arg.Text)) 
      { 
       MessageBox.Show("Please input the number."); 
       return; //?? 
      } 

      //submit 
    } 
    else 
    { 
     return; 
    } 
}); 

我的问题是: 我做一些数据验证(例如:只有数字,数字个性化......)之前提交

如果从用户输入invaild,我希望提示输入屏幕仍然可以保留。
如果我使用“返回”关键字,它会回到主屏幕。

或者是否有任何其他验证方式(比如AJAX?),我可以在此提示画面上使用,而不是在代码隐藏页面上进行验证?

数据验证

非常感谢!

+0

你能提供一些关于你想要做的事情的更多信息吗?也许是一个相关的例子或更多的代码?有数百万种方法来验证数据,有些甚至在用户输入时也是如此。只需要清理你想要的东西。 – 2013-02-22 13:54:25

+0

我已经做了一些更多的解释。我希望你能明白我的意思,谢谢! – user1371541 2013-02-22 14:52:29

回答

0

一种技术是在每次用户单击确定时保持循环并显示输入提示,但未能满足输入验证。如果结果不是有效的数值,您可以看到下面的示例,并且输入文本框将继续重复。

向用户添加某种反馈意味着在提交无效的情况下以前的输入不可接受也是一个好主意。下面是一个例子,其中输入文本框的标题在第一次无效提交后改变为包含指示输入值必须是有效数字的文本。

注意:Telerik说现在应该使用ShowAsync方法来代替Show方法,因为它已被弃用。

 string userInput = string.Empty; 
     int okButton = 0; 
     bool firstPass = true; 
     double numericResult; 

     while (okButton.Equals(0) && string.IsNullOrWhiteSpace(userInput)) 
     { 
      string inputBoxTitle = (!firstPass) ? "Enter the number (you must enter a valid number)" : "Enter the number"; 

      InputPromptClosedEventArgs args = await RadInputPrompt.ShowAsync(inputBoxTitle, MessageBoxButtons.OKCancel); 
      okButton = args.ButtonIndex; 
      firstPass = false; 

      if (okButton.Equals(0)) 
      { 
       if (!string.IsNullOrWhiteSpace(args.Text)) 
       { 
        bool isNumeric = double.TryParse(args.Text, out numericResult); 
        if (isNumeric) 
        { 
         // We have good data, so assign it so we can get out of this loop 
         userInput = args.Text; 
        } 
       } 
      } 
     }