方法有很多,常用的有两种,一个是显示的控件中只绑定指定字段。第二种是使用linq 去select一个新的数据结构。如:
publish class dataSkin
{
publish string id{get;set;}
publish int age{get;set;}
}
以上是一个数据结构:
下边是假定的从你的数据库提取指定字段:
var dts= from dt in datasource.datatable selelct new dataSkin()
{
id=dt.id,
age=dt.age
};
以上即完成过一个新的数据集。
非常感谢admin的回答,谢谢。我是一个silverlight初学者,很多问题还不是很了解。我的底层数据库是:一个数据表和一个视图,视图中是实时数据中的最新一条数据,表和视图包括ch0,ch1,......,ch52字段,其中ch2和ch3是gps的经纬度数据,现在所有的数据都能在silverlight前端的datagrid控件中显示出来,我的目的就是把实时传到前端的gps数据提出来,调用地图api函数mappoint()把gps数据显示在电子地图中。我的代码如下,但怎么也显示不出来,不知是什么原因,希望得到您的帮助,方便的话留下联系方式便于交流!
public partial class MainPage : UserControl
{
DispatcherTimer timer = new DispatcherTimer();
public MainPage()
{
InitializeComponent();
btn_jk.Click += new RoutedEventHandler(btn_jk_Click);
btn_yj.Click += new RoutedEventHandler(btn_yj_Click);
btn_qc.Click += new RoutedEventHandler(btn_qc_Click);
btn_tz.Click += new RoutedEventHandler(btn_tz_Click);
方法有很多,常用的有两种,一个是显示的控件中只绑定指定字段。第二种是使用linq 去select一个新的数据结构。如:
publish class dataSkin
{
publish string id{get;set;}
publish int age{get;set;}
}
以上是一个数据结构:
下边是假定的从你的数据库提取指定字段:
var dts= from dt in datasource.datatable selelct new dataSkin()
{
id=dt.id,
age=dt.age
};
以上即完成过一个新的数据集。
https://mcp.microsoft.com/authenticate/validatemcp.aspx
Transcript ID (868224)
Access Code (jacle169)
非常感谢admin的回答,谢谢。我是一个silverlight初学者,很多问题还不是很了解。我的底层数据库是:一个数据表和一个视图,视图中是实时数据中的最新一条数据,表和视图包括ch0,ch1,......,ch52字段,其中ch2和ch3是gps的经纬度数据,现在所有的数据都能在silverlight前端的datagrid控件中显示出来,我的目的就是把实时传到前端的gps数据提出来,调用地图api函数mappoint()把gps数据显示在电子地图中。我的代码如下,但怎么也显示不出来,不知是什么原因,希望得到您的帮助,方便的话留下联系方式便于交流!
public partial class MainPage : UserControl
{
DispatcherTimer timer = new DispatcherTimer();
public MainPage()
{
InitializeComponent();
btn_jk.Click += new RoutedEventHandler(btn_jk_Click);
btn_yj.Click += new RoutedEventHandler(btn_yj_Click);
btn_qc.Click += new RoutedEventHandler(btn_qc_Click);
btn_tz.Click += new RoutedEventHandler(btn_tz_Click);
}
void btn_tz_Click(object sender, RoutedEventArgs e)
{
timer.Stop();
}
void btn_qc_Click(object sender, RoutedEventArgs e)
{
GraphicsLayer graphicsLayer = jlmap.Layers["TruckMonitorLayer"] as GraphicsLayer;
graphicsLayer.Graphics.Clear();
}
void btn_yj_Click(object sender, RoutedEventArgs e)
{
throw new NotImplementedException();
}
void btn_jk_Click(object sender, RoutedEventArgs e)
{
timer.Interval = new TimeSpan(0, 0, 5);
timer.Tick += new EventHandler(timer_Tick);
timer.Start();
}
void timer_Tick(object sender, EventArgs e) loadOP = ctx.Load(ctx.GetGisnewdataQuery());
{
SL3TruckMonitorDomainContext ctx = new SL3TruckMonitorDomainContext();
LoadOperation
TruckMonitorData.ItemsSource = loadOP.Entities;
AddTruckGraphics();
}
//void AddTruckGraphics()
//{
// string gpsNMEASentences = "125.3282,43.8528\n" + "125.3282,43.8526\n" + "125.3282,43.8524\n" + "125.3282,43.8522\n" + "125.3282,43.8520\n" + "125.3282,43.8518\n";
// string[] gpsNMEASentenceArray = gpsNMEASentences.Split('\n');
// GraphicsLayer graphicsLayer = jlmap.Layers["TruckMonitorLayer"] as GraphicsLayer;
// for (int i = 0; i < gpsNMEASentenceArray.Length - 1; i++)
// {
// string[] gpsNMEASentence = gpsNMEASentenceArray[i].Split(',');
// Graphic graphic = new Graphic()
// {
// Geometry = new MapPoint(Convert.ToDouble(gpsNMEASentence[0]), Convert.ToDouble(gpsNMEASentence[1])),
// Symbol =CustomAutoShadowMarkerSymbol
// };
// graphicsLayer.Graphics.Add(graphic);
// }
//}
void AddTruckGraphics() loadOP = sl3dc.Load(sl3dc.GetGisnewdataQuery());
{
SL3TruckMonitorDomainContext sl3dc = new SL3TruckMonitorDomainContext();
LoadOperation
loadOP.Completed += new EventHandler(loadOP_Completed);
}
void loadOP_Completed(object sender, EventArgs e) op = (LoadOperation)sender;
{
LoadOperation
if (!op.HasError)
{
gisnewdata gnd = op.Entities.FirstOrDefault();
string x = gnd.ch3;
string y = gnd.ch2;
GraphicsLayer graphicsLayer = jlmap.Layers["TruckMonitorLayer"] as GraphicsLayer;
Graphic graphic = new Graphic()
{
Geometry = new MapPoint(Convert.ToDouble(x), Convert.ToDouble(y)),
Symbol =CustomAutoShadowMarkerSymbol
};
graphicsLayer.Graphics.Add(graphic);
}
}
}
}
怎么没有人回答?学silverlight的人这么少吗?
跪求admin给出解答!
你好!我看了一下你的问是,我觉得你不应用使用timer去做这个刷新数据的功能,你可以选择用pullingduplex的通信方式,或socket等实时性强的网络通信形式去实现。因为ria server有时候第一次方问的话未必5秒就能返回数据。这取决于网络还程序数据处理逻辑。你可以参考我的其他关于silverlight网络通信的文章.相信对你的项目会有一定帮助。
https://mcp.microsoft.com/authenticate/validatemcp.aspx
Transcript ID (868224)
Access Code (jacle169)