“输入字符串的格式不正确";更新数据表时出错 [英] "input string is not in correct format" error when updating Datatable

查看:406
本文介绍了“输入字符串的格式不正确";更新数据表时出错的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述



我有一个数据表,需要对标题名Min%的标题单击进行排序,并且尝试了以下代码...

dgGridview的数据源设置得较早

hi ,

I have a Datatable which needs to be sorted on header click on column name Min% and I have tried the below code...

the datasource for the dgGridview is set earlier

private int SortOrder=-1;


以下代码在dgGridview_ColumnHeaderclick事件中


The below code is in dgGridview_ColumnHeaderclick event

DataView dv = new DataView();
DataSet ds = new DataSet();
ds = (DataSet)dgGridview.DataSource;
dv = ds.Tables[0].DefaultView;
ListSortDirection sortDirection;
String temp;
ListSortDirection sortDirection;
String temp;
if (this.dgGridview.SortedColumn.Name == "Min%")
{
    if (!dv.Table.Columns.Contains("Percent_Decimal"))
    {
        DataColumn dcColumn = new DataColumn();
        dcColumn.DataType = System.Type.GetType("System.Decimal");
        dcColumn.ColumnName = "Percent_Decimal";
        dcColumn.Expression = "Convert([Min%], 'System.Decimal')";             
        foreach (DataRow row in dv.Table.Rows)
        {
            foreach (DataColumn column in dv.Table.Columns)
            {
                if(row[column].ToString().Contains("%"))
                {
                    temp = row[column].ToString().Replace("%"," ");
                    row[column] = temp;
                }
            }
        }
        dv.Table.AcceptChanges();
        dv.Table.Columns.Add(dcGridColumn);
        DataGridViewTextBoxColumn grdTextColumn = new DataGridViewTextBoxColumn();
        grdTextColumn.Name = "Percent_Decimal";
        grdTextColumn.DataPropertyName = "Percent_Decimal";
        dgvViewAllStockGuidelines.Columns.Add(grdTextColumn);
        dgvViewAllStockGuidelines.Columns["Percent_Decimal"].Visible = false;
}                
if (this.SortOrder == -1)
{
    sortDirection = ListSortDirection.Descending;
    dgGridview.Sort(dgGridview.Columns["Percent_Decimal"], sortDirection);
    dgGridview.Columns[e.ColumnIndex].HeaderCell.SortGlyphDirection = System.Windows.Forms.SortOrder.Descending;
    this.SortOrder = 1;
}
else
{
    sortDirection = ListSortDirection.Ascending;
    dgGridview.Sort(dgvViewAllStockGuidelines.Columns["Percent_Decimal"], sortDirection);
    dgGridview.Columns[e.ColumnIndex].HeaderCell.SortGlyphDirection = System.Windows.Forms.SortOrder.Ascending;
    this.SortOrder = -1;
}
dv.Table.Columns["Min%"].DataType = System.Type.GetType("System.String");                
String tem;
foreach (DataRow row in dv.Table.Rows)
{
    foreach (DataColumn column in dv.Table.Columns)
    {
        if (row[column].ToString().Contains(" ") )
        {
            tem = row[column].ToString().Replace(" ", "%");
            row[column] = tem;//error
        }
    }
}
dv.Table.AcceptChanges();
}


我收到错误:上述行中的input string is not in correct format(以粗体显示).

请帮我解决同样的问题.
谢谢!


I am getting error: input string is not in correct format in the above mentioned line (in bold).

Please help me regarding the same.
Thanks!

推荐答案

假设您的代码确实有效-我尚未检查-那么您的问题很简单:您在做一些愚蠢的事情,而我没有做知道为什么:
Assuming your code actually works - I haven''t checked - then your problem is simple: you are doing something silly, and I don''t know why:
dcColumn.DataType = System.Type.GetType("System.Decimal");


tem = row[column].ToString().Replace(" ", "%");
row[column] = tem;//error

如果您尝试将字符串分配给十进制字段,它将尝试将其转换:但是"1.23%"不是有效的十进制.因此,运行时错误输入字符串的格式不正确".

那你为什么要这么做?

If you try to assign a string to a decimal field, it will try to convert it: But "1.23%" is not a valid decimal. Hence the runtime error "input string is not in correct format".

So why are you doing this?


这篇关于“输入字符串的格式不正确";更新数据表时出错的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆