欢迎来到天天文库
浏览记录
ID:38416619
大小:79.50 KB
页数:24页
时间:2019-06-12
《在Windows窗体DataGridView控件中实现实时数据加载的虚拟模式》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、在DataGridView控件中实现虚拟模式的一个原因是为了只在需要时才检索数据。这称为“实时数据加载”。例如,如果您正在使用远程数据库中的一个非常大的表,您可能希望只检索显示所需的数据,而且只在用户将新行滚动到视图中时才检索额外的数据,从而避免启动延迟。如果运行您的应用程序的客户端计算机只有少量内存可供存储数据使用,则您可能还希望在从数据库中检索新值时丢弃无用的数据。下面的部分描述如何配合使用DataGridView控件与实时缓存。若要将本主题中的代码作为一个单独的列表进行复制,请参见如何:在Windows窗体DataGrid
2、View控件中实现实时数据加载的虚拟模式。窗体下面的代码示例定义了一个包含只读DataGridView控件的窗体,该控件通过CellValueNeeded事件处理程序与Cache对象进行交互。Cache对象管理本地存储的值,并使用DataRetriever对象从Northwind示例数据库的Orders表中检索值。DataRetriever对象(实现Cache类所需要的IDataPageRetriever接口)还用于初始化DataGridView控件的行和列。IDataPageRetriever、DataRetriever和Ca
3、che类型在本主题的稍后部分予以介绍。注意:将敏感信息(如密码)存储在连接字符串中可能会影响您的应用程序的安全性。若要控制对数据库的访问,一种较为安全的方法是使用Windows身份验证(也称为集成安全性)。有关更多信息,请参见保护连接信息(ADO.NET)。C# 复制代码publicclassVirtualJustInTimeDemo:System.Windows.Forms.Form{privateDataGridViewdataGridView1=newDataGridView();privateCachememoryCac
4、he;//Specifyaconnectionstring.Replacethegivenvaluewitha//validconnectionstringforaNorthwindSQLServersample//databaseaccessibletoyoursystem.privatestringconnectionString="InitialCatalog=NorthWind;DataSource=localhost;"+"IntegratedSecurity=SSPI;PersistSecurityInfo=Fals
5、e";privatestringtable="Orders";protectedoverridevoidOnLoad(EventArgse){//Initializetheform.this.AutoSize=true;this.Controls.Add(this.dataGridView1);this.Text="DataGridViewvirtual-modejust-in-timedemo";//CompletetheinitializationoftheDataGridView.this.dataGridView1.Si
6、ze=newSize(800,250);this.dataGridView1.Dock=DockStyle.Fill;this.dataGridView1.VirtualMode=true;this.dataGridView1.ReadOnly=true;this.dataGridView1.AllowUserToAddRows=false;this.dataGridView1.AllowUserToOrderColumns=false;this.dataGridView1.SelectionMode=DataGridViewS
7、electionMode.FullRowSelect;this.dataGridView1.CellValueNeeded+=newDataGridViewCellValueEventHandler(dataGridView1_CellValueNeeded);//CreateaDataRetrieveranduseittocreateaCacheobject//andtoinitializetheDataGridViewcolumnsandrows.try{DataRetrieverretriever=newDataRetri
8、ever(connectionString,table);memoryCache=newCache(retriever,16);foreach(DataColumncolumninretriever.Columns){dataGridView1.Columns.
此文档下载收益归作者所有