我必须根据标志将行值添加到特定列。 [英] I have to add row value to particular column depending on flag.
问题描述
我必须根据flag.getting错误将行值添加到特定列中
无法将类型为'System.Data.DataRow'的对象强制转换为'System.IConvertible'.Couldn' t store< system.data.datarow>在AMOUNT列中。预期的类型是十进制。
我尝试过:
< pre lang =c#> DataTable dt = new DataTable();
dt.Columns.AddRange( new DataColumn [ 5 ] {
new DataColumn( AMOUNT, typeof ( decimal )),
new DataColumn( DUE DATE, typeof ( string )),
new DataColumn( PAYMENT DATE, typeof ( decimal )),
new DataColumn( EMI RECEIVED, typeof ( decimal )) ,
new DataColumn( OD CHRGS RECEIVED , typeof ( decimal ))
});
// dt.Columns.Add(DATE,typeof(string));
// dt.Columns.Add(DUE AMOUNT,typeof(decimal));
// dt.Columns.Add(PAYMENT,typeof(decimal));
// dt.Columns.Add(OD CHRGS RECEIVED,typeof(decimal));
DataRow dr;
dr = dt.NewRow();
for ( int i = 0 ; i < dsreq.Tables [ 0 ]。Rows.Count; i ++)
{
dr [ AMOUNT] = dt.Rows.Add (dsreq.Tables [ 0 ]。行[i] [ AMT跨度>]);
if (dsreq.Tables [ 0 ]。行[i] [ FLAG]。ToString()== < span class =code-string> D)
{
dr [ DUE DATE] = dt.Rows.Add(dsreq.Tables [ 0 ]。行[i] [ DATE1]。ToString());
}
其他
{
dr [ PAYMENT DATE] = dt.Rows.Add(dsreq.Tables [ 0 ]。行[i] [ DATE1]。ToString());
}
dr [ EMI RECEIVED] = dt.Rows.Add (dsreq.Tables [ 0 ]。行[i] [ 安装金额]);
dr [ OD CHRGS RECEIVED] = dt.Rows.Add(dsreq.Tables [ 0 ]。行[i] [ AFC /其他金额]);
试试这个
for ( int i = 0 ; i < dsreq.Tables [ 0 ]。Rows.Count; i ++)
{
DataRow dr = dt.NewRow();
dr [ AMOUNT] = Convert.ToDecimal(dsreq.Tables [ 0 ]。行[i] [ AMT ]);
if (dsreq.Tables [ 0 ]。行[i] [ FLAG]。ToString()== < span class =code-string> D)
{
dr [ DUE DATE] = dsreq.Tables [ 0 ]。行[i] [ DATE1]。ToString();
}
其他
{
dr [ PAYMENT DATE] = Convert.ToDecimal(dsreq.Tables [ 0 ]。行[i] [< span class =code-string> DATE1]。ToString());
}
dr [ EMI RECEIVED] = Convert.ToDecimal(dsreq .Tables [ 0 ]。行[i] [ 安装金额]);
dr [ OD CHRGS RECEIVED] = Convert.ToDecimal(dsreq.Tables [< span class =code-digit> 0 ]。行[i] [ AFC / OTHER AMOUNT 跨度>]);
dt.Rows.Add(dr);
}
根据表格列中定义的类型投放值
感谢您的回复,但从上面我得到的输出为:
AMOUNT DUE DATE PAYMENT DATE EMI收到
234017-01-2015233010 234014-02-2015233010 234013-03-2015233010 234015-04-2015233010
但我想要这样的输出
到期日期付款日期EMI收到
2340 14-02-2015 14-02-2015 2330
I have to add row value to particular column depending on flag.getting error as
Unable to cast object of type 'System.Data.DataRow' to type 'System.IConvertible'.Couldn't store <system.data.datarow> in AMOUNT Column. Expected type is Decimal.
What I have tried:
DataTable dt = new DataTable();
dt.Columns.AddRange(new DataColumn[5] {
new DataColumn("AMOUNT", typeof(decimal)),
new DataColumn("DUE DATE", typeof(string)),
new DataColumn("PAYMENT DATE", typeof(decimal)),
new DataColumn("EMI RECEIVED", typeof(decimal)),
new DataColumn("OD CHRGS RECEIVED", typeof(decimal))
});
//dt.Columns.Add("DATE", typeof(string));
// dt.Columns.Add("DUE AMOUNT", typeof(decimal));
// dt.Columns.Add("PAYMENT", typeof(decimal));
// dt.Columns.Add("OD CHRGS RECEIVED", typeof(decimal));
DataRow dr;
dr = dt.NewRow();
for (int i = 0; i < dsreq.Tables[0].Rows.Count; i++)
{
dr["AMOUNT"] = dt.Rows.Add(dsreq.Tables[0].Rows[i]["AMT"]);
if (dsreq.Tables[0].Rows[i]["FLAG"].ToString() == "D")
{
dr["DUE DATE"] = dt.Rows.Add(dsreq.Tables[0].Rows[i]["DATE1"].ToString());
}
else
{
dr["PAYMENT DATE"] = dt.Rows.Add(dsreq.Tables[0].Rows[i]["DATE1"].ToString());
}
dr["EMI RECEIVED"] = dt.Rows.Add(dsreq.Tables[0].Rows[i]["INSTALLMENT AMOUNT"]);
dr["OD CHRGS RECEIVED"] = dt.Rows.Add(dsreq.Tables[0].Rows[i]["AFC/OTHER AMOUNT"]);
try this
for (int i = 0; i < dsreq.Tables[0].Rows.Count; i++) { DataRow dr = dt.NewRow(); dr["AMOUNT"] = Convert.ToDecimal(dsreq.Tables[0].Rows[i]["AMT"]); if (dsreq.Tables[0].Rows[i]["FLAG"].ToString() == "D") { dr["DUE DATE"] = dsreq.Tables[0].Rows[i]["DATE1"].ToString(); } else { dr["PAYMENT DATE"] = Convert.ToDecimal(dsreq.Tables[0].Rows[i]["DATE1"].ToString()); } dr["EMI RECEIVED"] = Convert.ToDecimal(dsreq.Tables[0].Rows[i]["INSTALLMENT AMOUNT"]); dr["OD CHRGS RECEIVED"] = Convert.ToDecimal(dsreq.Tables[0].Rows[i]["AFC/OTHER AMOUNT"]); dt.Rows.Add(dr); }
cast the values based on the type defined in the table column
Thanks for your response but from above i am getting output as:
AMOUNT DUE DATE PAYMENT DATE EMI RECEIVED
234017-01-2015233010 234014-02-2015233010 234013-03-2015233010 234015-04-2015233010
but i want output like this
AMOUNT DUE DATE PAYMENT DATE EMI RECEIVED
2340 14-02-2015 14-02-2015 2330
这篇关于我必须根据标志将行值添加到特定列。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!