событие NewCustomTables не возвращает изменившиеся строки
событие NewCustomTables возвращает только новые строки. Хотя в документации написано
Quote:В случае, если ни одно из полей не было помечено атрибутом IdentityAttribute, то событие QuikTrader.CustomTablesChanged не будет никогда вызываться, и все изменения будут приходит как новые строчки через QuikTrader.NewCustomTables.
Посмотрел в отладчике, возвращается только одна строка с новым временем. Я и не знаю что я делаю не так.
Code
trader.NewCustomTables += (type, objects) =>
{
// нас интересует только QuikCandle
if (type == typeof(QuikCandle))
{
List<QuikCandle> QC = (List<QuikCandle>)objects.Cast<QuikCandle>();
for (int i = 0; i < QC.Count; i++)
{
string datatime = QC[i].DateTime.Date + QC[i].DateTime.Time;
DataRow newrow = dt.NewRow();
object searh = datatime;
newrow.ItemArray = new object[] {QC[i].DateTime.Date, QC[i].DateTime.Time, datatime, QC[i].OpenPrice, QC[i].HighPrice, QC[i].LowPrice, QC[i].ClosePrice, QC[i].Volume };
if ((Convert.ToInt32(QC[i].DateTime.Time) >= nach) & (Convert.ToInt32(QC[i].DateTime.Time) <= konec))
{
if (!dt.Rows.Contains(searh)) //Если значение не существует в бд то добавляем
{
dt.Rows.Add(newrow);
Console.WriteLine(dt.Rows[dt.Rows.Count - 1][2] + " " + dt.Rows[dt.Rows.Count - 1][3]);
}
else //Если значение есть то проверяем изменилось ли оно(Вот эта часть инструкции не работает из-за того что всегда возвращается только новое значение)
{
bool log = true;
Console.WriteLine(dt.Rows.Find(datatime).ItemArray[2]);
for (int z = 3; z < newrow.ItemArray.Length; z++)
{
if (Convert.ToDecimal(dt.Rows.Find(datatime).ItemArray[z]) != Convert.ToDecimal(newrow.ItemArray[z]))
{
log = false;
break;
}
}
if (log)
{
dt.Rows.Find(datatime).ItemArray = new object[] { QC[i].DateTime.Date, QC[i].DateTime.Time, datatime, QC[i].OpenPrice, QC[i].HighPrice, QC[i].LowPrice, QC[i].ClosePrice, QC[i].Volume };
Console.WriteLine(dt.Rows.Find(datatime).ItemArray[2] + " " + dt.Rows.Find(datatime).ItemArray[3]);
}
}
}
}
}
};
По идее, если я правильно понял из документации, событие должно возвращать изменяющиеся строки как новые и вторая чать инструкции должна работать.