string sql = "SELECT unid FROM DeviceModifyDetail WHERE DevLabel LIKE '%028%'";
object d = SqlHelper.ExecuteScalar(Connstr, CommandType.Text, sql); //查询结果
string UniqueID = Convert.ToString(d);
long dianID = Convert.ToInt64(UniqueID);
DateTime dt1 = dateEdit1.DateTime;
DateTime dt2 = dateEdit2.DateTime;
将数据库的查询结果,放到ReadFile再读取文件中的数据显示出
DataTable dataTable = ReadFile(mcFile, false, dt1, dt2, dianID, true, 0);
dataTable.AcceptChanges();
gridControl1.DataSource = dataTable;
ReadFile方法
public DataTable ReadFile(string string_0, bool bool_0, DateTime StartTime, DateTime EndTime, long DianID, bool bool_1 = true, int int_0 = 0)
{
idList = new List<long>();
DataTable dataTable = NewTable(bool_1);
//progressBar1.Value = 0;
if (File.Exists(string_0))
{
BinaryReader binaryReader = OpenFile(string_0, Encoding.Default);
//progressBar1.Maximum = Convert.ToInt32(binaryReader.BaseStream.Length / 36) + 2;
int i = 100;
for (int j = 0; i < binaryReader.BaseStream.Length; i += 36, j++)
{
//progressBar1.Value++;
binaryReader.BaseStream.Position = i;
long num = BitConverter.ToInt64(binaryReader.ReadBytes(8), 0);
binaryReader.BaseStream.Position = i + 8;
uint num2 = BitConverter.ToUInt32(binaryReader.ReadBytes(4), 0);
binaryReader.BaseStream.Position = i + 12;
double num3 = BitConverter.ToDouble(binaryReader.ReadBytes(8), 0);
binaryReader.BaseStream.Position = i + 20;
uint num4 = BitConverter.ToUInt32(binaryReader.ReadBytes(4), 0);
binaryReader.BaseStream.Position = i + 24;
uint num5 = BitConverter.ToUInt32(binaryReader.ReadBytes(4), 0);
binaryReader.BaseStream.Position = i + 28;
long dateData = BitConverter.ToInt64(binaryReader.ReadBytes(8), 0);
DateTime dateTime = DateTime.FromBinary(dateData);
bool flag = false;
if (bool_0)
{
if ((num5 & 0x40000u) != 0 || (num5 & 0x80000u) != 0 || (num5 & 0x200000u) != 0)
{
flag = true;
}
}
else
{
flag = true;
}
if (!flag)
{
continue;
}
if (num3.ToString().ToUpper().Contains("E"))
{
int length = num3.ToString().ToUpper().IndexOf("E");
num3 = Convert.ToDouble(num3.ToString().Substring(0, length));
}
idList.Add(num);
DataRow dataRow = dataTable.NewRow();
dataRow["所在密采文件"] = Path.GetFileName(string_0);
dataRow["记录ID"] = j;
dataRow["唯一编码"] = num;
dataRow["物理地址"] = num2;
dataRow["值"] = num3;
dataRow["原始值"] = num4;
dataRow["状态ID"] = num5;
dataRow["对应时间"] = dateTime;
dataRow["文件路径"] = Path.GetDirectoryName(string_0);
Enum2 @enum = (Enum2)int_0;
dataRow["文件来源"] = @enum.ToString();
DateTime value = dateTime;
if (value >= StartTime && value <= EndTime)
{
if (DianID == 0 || num == DianID)
{
dataTable.Rows.Add(dataRow);
continue;
}
}
}
//progressBar1.Value = progressBar1.Maximum;
binaryReader.Close();
}
return dataTable;
}
现在只能显示出一条想将查询出的多条UniqueID 结果,显示到dataTable,怎样实现呢?