Windows Phone上的提示输入框上的数据验证

时间:2013-02-21 14:42:42

标签: windows-phone-7 windows-phone-8 telerik-radinput

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,我希望仍然可以保留提示输入屏幕。
如果我使用“return”关键字,它将返回主屏幕。

或者是否有任何其他验证方法(类似于AJAX?)我可以在此提示符上使用而不是在代码隐藏页面上执行此操作?

非常感谢!

1 个答案:

答案 0 :(得分: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;
                    }
                }
            }
        }