我必须根据标志将行值添加到特定列。 [英] I have to add row value to particular column depending on flag.

查看:62
本文介绍了我必须根据标志将行值添加到特定列。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我必须根据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屋!

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