foreach循环只获得1项?

时间:2013-12-11 10:50:46

标签: c# sql

我已经为我的代码添加了一个FOREACH循环,我想让它循环我有多少选定的项目。如果我选择2,当我调试时它的计数为2,但是从第一个选定的项目中获取信息两次。

if(result == MessageBoxResult.Yes)
{
    int userid = viewuser.AuditUserId;
    var data = (string)null;

    foreach (var item in dgAllocate.SelectedItems)
    {
       data = transaction.TransactionId.ToString();
       sp.InsertInformationToAuditTasks(userid, data, "15000", DateTime.Now);
    }
}

这是我的循环,它决定从不同的选定项目中获取不同的TransactionIds。

enter image description here

正如你所看到的,我选择了多个,它会带出相同的ID?

编辑:

cAuditTransactionsEntity transaction = _TransactionId as cAuditTransactionsEntity;

这就是我定义交易的方式。

4 个答案:

答案 0 :(得分:6)

您每次迭代都会更新“item”的值,但不会使用它。

您正在从“交易”中分配“数据”,而您尚未更新:

data = transaction.TransactionId.ToString();

答案 1 :(得分:2)

您永远不会使用循环中设置的'item'变量。我认为您需要以某种方式使用它来更改数据。交易在哪里定义?它根本没有在循环中修改。

答案 2 :(得分:2)

您需要从商品中获取数据,而不是从您的交易中获取交易ID:

foreach (var item in dgAllocate.SelectedItems)
{
   var data = item.TransactionId.ToString();
   sp.InsertInformationToAuditTasks(userid, data, "15000", DateTime.Now);
}

检查您的代码:

var data = (string)null;

会发出强制转换异常。在foreach循环中移动声明。

答案 3 :(得分:2)

我们假设item的类型为cAuditTransactionsEntity,然后您就可以获得data这样的多个项目

   if(result == MessageBoxResult.Yes)
   {
     int userid = viewuser.AuditUserId;
     var data = (string)null;

     foreach (var item in dgAllocate.SelectedItems)
     {
       // Here u have to get cAuditTransactionsEntity by item object
       data = (item as cAuditTransactionsEntity).TransactionId.ToString();
       sp.InsertInformationToAuditTasks(userid, data, "15000", DateTime.Now);
     }
   }