Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 输入字符串的格式不正确_C#_Asp.net_Infragistics - Fatal编程技术网

C# 输入字符串的格式不正确

C# 输入字符串的格式不正确,c#,asp.net,infragistics,C#,Asp.net,Infragistics,以下是我的代码,其中我将一列声明为私有字符串,并使用该值将该值绑定到网格,但在“PolicyRenewalGracePeriodDays”附近出现错误,输入字符串的格式不正确。请查看下面突出显示的文本,并告知我 /// </summary> private const string COL_UNDERWRITER_DISPLAY_NAME = "UnderwriterDisplayName"; /// <summary> /// /// </summary>

以下是我的代码,其中我将一列声明为私有字符串,并使用该值将该值绑定到网格,但在“PolicyRenewalGracePeriodDays”附近出现错误,输入字符串的格式不正确。请查看下面突出显示的文本,并告知我

/// </summary>
private const string COL_UNDERWRITER_DISPLAY_NAME = "UnderwriterDisplayName";
/// <summary>
/// 
/// </summary>
private const string COL_UNDERWRITER_INITIALS = "UnderwriterInitials";
/// <summary>
/// 
/// </summary>
private const string COL_UA_DISPLAY_NAME = "UADisplayName";
/// <summary>
/// 
/// </summary>
private const string COL_UA_INITIALS = "UA";
**private const string COL_RENEWAL_GRACE_PERIOD_DAYS = "PolicyRenewalGracePeriodDays";**
#endregion


    protected void grdAction_DataBound(object sender, EventArgs e)
        {
            foreach (UltraGridRow row in this.grdAction.DisplayLayout.Rows)
            {
                TemplatedColumn col;
                CellItem item;
                HyperLink docLink;
                HyperLink letterLink;
                HyperLink actionLink;
                Label actionLabel;
                var policyClassId = Utility.GetCurrentPolicyClassId();
             PolicyClass policyClass = Utility.GetCurrentPolicyClassEntity();
                var accountId = (int) row.DataKey;
                var insuredName = row.Cells.FromKey(COL_INSURED_NAME_HIDDEN).Text;
                var referenceNumber = row.Cells.FromKey(COL_REFERENCE_NUMBER).Text;
                var statusId = int.Parse(row.Cells.FromKey(COL_STATUS_ID).Text);

                var optionNames = string.Empty;
                if (!string.IsNullOrEmpty(row.Cells.FromKey(COL_OPTION_NAMES).Text))
                    optionNames = row.Cells.FromKey(COL_OPTION_NAMES).Text;

                var optionCount = int.Parse(row.Cells.FromKey(COL_OPTION_COUNT).Text);
                var isVoidable = (row.Cells.FromKey(COL_IS_VOIDABLE).Text == "1");
                bool renewalFlag;
                bool doNotRenewFlag;
                bool hasRenewingReferenceNumber;
                var currentUser = (User) Session[AppConstants.SK_CURRENT_USER];
                var expirationDate = DateTime.MinValue;
                bool convertedFlag;
                var documentCount = int.Parse(row.Cells.FromKey(COL_DOCUMENT_COUNT).Text);
                var allowAddLayer = bool.Parse(row.Cells.FromKey(COL_ALLOW_ADD_LAYER).Text);
                var renewableLayers = row.Cells.FromKey(COL_RENEWABLE_LAYERS).Text;
                int renewalGracePeriodDays = 0;

                **renewalGracePeriodDays = int.Parse(row.Cells.FromKey(COL_RENEWAL_GRACE_PERIOD_DAYS).Text);**
//
private const string COL\u unsecurer\u DISPLAY\u NAME=“unsecurer displayName”;
/// 
/// 
/// 
private const string COL_unsecurer_INITIALS=“unsecurer INITIALS”;
/// 
/// 
/// 
私有常量字符串COL\u UA\u DISPLAY\u NAME=“UADisplayName”;
/// 
/// 
/// 
私有常量字符串COL_UA_缩写=“UA”;
**private const string COL_RENEWAL_GRACE_PERIOD_DAYS=“PolicyRenewalGracePeriodDays”**
#端区
受保护的无效数据绑定(对象发送方、事件参数e)
{
foreach(此.grdAction.DisplayLayout.Rows中的UltraGridRow行)
{
模板柱;
单元格项目;
超链接docLink;
超链接;
超链接操作链接;
标签操作标签;
var policyClassId=Utility.GetCurrentPolicyClassId();
PolicyClass PolicyClass=Utility.GetCurrentPolicyClassEntity();
var accountId=(int)row.DataKey;
var insuredName=行.Cells.FromKey(列\u INSURED\u NAME\u HIDDEN).Text;
var referenceNumber=行.单元格.FromKey(列参考号).Text;
var statusId=int.Parse(row.Cells.FromKey(COL\u STATUS\u ID).Text);
var optionNames=string.Empty;
if(!string.IsNullOrEmpty(row.Cells.FromKey(COL\u OPTION\u NAMES.Text))
optionNames=row.Cells.FromKey(COL\u OPTION\u NAMES).Text;
var optionCount=int.Parse(row.Cells.FromKey(COL\u OPTION\u COUNT).Text);
var isVoidable=(row.Cells.FromKey(COL_可撤销)。Text=“1”);
布尔-拉格;
布尔多诺特伦夫拉格;
布尔有更新的参考编号;
var currentUser=(用户)会话[AppConstants.SK_CURRENT_User];
var expirationDate=DateTime.MinValue;
布尔转换旗;
var documentCount=int.Parse(row.Cells.FromKey(COL\u DOCUMENT\u COUNT).Text);
var allowadlayer=bool.Parse(row.Cells.FromKey(COL\u ALLOW\u ADD\u LAYER).Text);
var renewableLayers=row.Cells.FromKey(COL\u renewableLayers).Text;
int renewalGracePeriodDays=0;
**renewalGracePeriodDays=int.Parse(row.Cells.FromKey(COL\u RENEWAL\u GRACE\u PERIOD\u DAYS.Text)**

如果单元格不包含有效数字(例如空字符串),会发生什么情况?。
您得到了问题中提到的例外情况。
一个简单的解决方法是使用该方法

来自MSDN文档

当此方法返回时,[第二个参数]包含32位带符号整数值 等于s[第一个参数]中包含的数字,如果转换成功, 或者,如果转换失败,则为零 参数为null、格式不正确或表示 小于MinValue或大于MaxValue的数字。此参数为 未初始化通过


我已经添加了粗体和方括号中的文本。因此,如果默认值为零,则不必对TryParse方法的结果进行任何测试。

最有可能的是
row.Cells.FromKey(COL\u RENEWAL\u GRACE\u PERIOD\u DAYS).Text
没有返回您期望的结果。如果它的值不是0-9或大于
int.MaxValue
的值,则会出现异常。此外
null
System.String.Empty
将导致异常

int renewalGracePeriodDays;
if (!int.TryParse(row.Cells.FromKey(COL_RENEWAL_GRACE_PERIOD_DAYS).Text), out renewalGracePeriodDays)
{
    renewalGracePeriodDays = 0;
    // Inside here, you can log the exception, alert the user, or end processing
}
您可以改为使用
TryParse
,它将返回一个bool,指示解析是否有效。如果有效,则传入的int将设置为传入的字符串

给出一些实际代码

if(!int.TryParse(row.Cells.FromKey(COL_RENEWAL_GRACE_PERIOD_DAYS).Text, out renewalGracePeriodDays))
         renewalGracePeriod = MyDefaultValue;

除了上述答案之外,您还可以轻松创建一个小扩展方法来优雅地处理这些情况:

public static class ExtensionUtils
{
    public static int ToZeroIfNotInt(this string valueToConvert)
    {
        int number =0;
        int.TryParse(valueToConvert,out number);
        return number;
    }
}
然后这样称呼它:

renewalGracePeriodDays = row.Cells.FromKey(COL_RENEWAL_GRACE_PERIOD_DAYS).Text.ToZeroIfNotInt();

您正在检查的列可能是空字符串,或者包含非整数数据。我建议使用TryParse方法

int renewalGracePeriodDays;
if (!int.TryParse(row.Cells.FromKey(COL_RENEWAL_GRACE_PERIOD_DAYS).Text), out renewalGracePeriodDays)
{
    renewalGracePeriodDays = 0;
    // Inside here, you can log the exception, alert the user, or end processing
}

如果TryParse失败,您的宽限期将默认为0。在处理用户输入时使用此方法是一个好主意,因为即使正确提示,也无法知道用户将输入什么…

My guess
row.Cells.FromKey(COL\u RENEWAL\u grace\u period\u DAYS).Text
包含除
0-9
:)以外的字符。您需要识别
行.Cells.FromKey(COL\u RENEWAL\u GRACE\u PERIOD\u DAYS)的值。Text
在异常发生时。然后更新您的问题以包含该值。
int.Parse(“thisIsNotAValidNumber”)
将引发与您看到的异常类似的异常。请检查文本字符串是什么。它可能为空或包含字母或其他内容。
int.TryParse
不是下面答案中所述的解决方案。您应该考虑的问题是,为什么此字段包含无效字符。“PolicyRenewalGracePeriodDays”如何在网格中设置的列?您在该列上设置了哪些属性,以及您可能用于该列的任何编辑器?如果某些值真的
0
有些值具有无效字符怎么办?@L.B.它仍将正确返回该值。如果无法解析该值,它只会将其默认为
0
。您可能可以添加一个参数r到扩展方法,以选择除0以外的默认值。例如,您可能希望返回-1,以指示无效值…Icarus,假设该字段包含十六进制字符串形式的整数。您将为1a返回0,也为0返回0。真正的问题是OP为什么会收到此消息,而不是如何抑制它。Evan告诉我。r谢谢你的回复,我正在尝试使用co