“输入字符串的格式不正确";更新数据表时出错 [英] "input string is not in correct format" error when updating Datatable
问题描述
我有一个数据表,需要对标题名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屋!