使用DataView条件查询,绑定后的结果有一列没有显示解决方案
使用DataView条件查询,绑定后的结果有一列没有显示
将文本读取到DataTable中,然后用DataView查询,Channel=’通道0‘,效果如下
下面上代码
DataTable中数据 能显示完全
求解答 谢谢
------解决思路----------------------
DataView的通道号绑定的字段是否为Channel?
------解决思路----------------------
先断点看DataView里到底是什么,不要盲目怀疑
如果DataView里有那一列,再看前台的datagridview控件是如何绑定的
将文本读取到DataTable中,然后用DataView查询,Channel=’通道0‘,效果如下
下面上代码
class Record
{
//通道号
private string channelId;
public string ChannelId
{
get { return channelId; }
set { channelId = value; }
}
//开始时间
private string startTime;
public string StartTime
{
get { return startTime; }
set { startTime = value; }
}
//结束时间
private string endTime;
public string EndTime
{
get { return endTime; }
set { endTime = value; }
}
//持续时间
private string lastTime;
public string LastTime
{
get { return lastTime; }
set { lastTime = value; }
}
//数值
private string number;
public string Number
{
get { return number; }
set { number = value; }
}
/// <summary>
/// 读取文本到DataTable中
/// </summary>
/// <param name="str">文件路径</param>
/// <returns></returns>
public DataTable ReadToDataTable(string str)
{
DataTable dt = new DataTable();
using (StreamReader objReader = new StreamReader(str,Encoding.Default))
{
dt.Columns.Add("Channel", System.Type.GetType("System.String"));
dt.Columns.Add("StartTime", System.Type.GetType("System.String"));
dt.Columns.Add("EndTime", System.Type.GetType("System.String"));
dt.Columns.Add("LastTime", System.Type.GetType("System.String"));
dt.Columns.Add("Number", System.Type.GetType("System.String"));
string sLine = "";
while (sLine != null)
{
sLine = objReader.ReadLine();
if (sLine != null && !sLine.Equals(""))
{
DataRow dr = dt.NewRow();
string[] values = sLine.Split('\t');
dr["Channel"] = values[0];
dr["StartTime"] = values[1];
dr["EndTime"] = values[2];
dr["LastTime"] = values[3];
dr["Number"] = values[4];
dt.Rows.Add(dr);
}
}
objReader.Close();
}
return dt;
}
/// <summary>
/// 通过条件查出信息
/// </summary>
/// <param name="dt"></param>
/// <param name="str">查询条件</param>
/// <returns></returns>
//public Record[] GetRecords(DataTable dt,string str)
//{
// DataRow[] rows= dt.Select(str);
// Record[] items = new Record[rows.Length];
// for (int i = 0; i < rows.Length; i++)
// {
// Record record = new Record();
// record.ChannelId = (string)rows[i]["Channel"];
// record.StartTime = (string)rows[i]["StartTime"];
// record.EndTime = (string)rows[i]["EndTime"];
// record.lastTime = (string)rows[i]["LastTime"];
// record.Number = (string)rows[i]["Number"];
// items[i] = record;
// }
// return items;
//}
public DataView GetDv(DataTable dt, string str)
{
DataView dv = new DataView(dt);
dv.RowFilter = str;
return dv;
}
}
Record rd=new Record();
string channelId = cmbChannel.Text;
string startTime = dpStart.SelectedDate.ToString();
string endTime = dpEnd.SelectedDate.ToString();
string str = "Channel LIKE '%" + channelId + "%'";
//dg.DataContext = rd.GetRecords(rd.ReadToDataTable(@"Record.txt"), str);
//string str="Channel="+channelId+"and StartTime LIKE’%"+startTime+"%’"+"and StartTime LIKE’%"+endTime+"%’";
dg.ItemsSource = rd.GetDv(rd.ReadToDataTable(@"Record.txt"), str);
//dg.ItemsSource=rd.ReadToDataTable(@"Record.txt").DefaultView;
}
DataTable中数据 能显示完全
求解答 谢谢
------解决思路----------------------
DataView的通道号绑定的字段是否为Channel?
------解决思路----------------------
先断点看DataView里到底是什么,不要盲目怀疑
如果DataView里有那一列,再看前台的datagridview控件是如何绑定的