当前位置: 首页 > 编程语言 > C#

使用BindingNavigator代替BindingSource分享

时间:2023-04-10 18:46:02 C#

使用BindingNavigator代替BindingSource我有一个在数据库中做分页的应用程序。也就是说,检索项目列表的调用包括页码、页面大小,并且只返回页面的数据。例如:ItemCollectionitems=ListAllItems(1,20);//第1页,每页显示20个项目ItemCollection包含一个PagingUtil属性,该类包含支持分页但不检索所有记录的属性。公共类PagingUtil{publicintStartRow{get;私有集;}publicintEndRow{得到;私有集;}publicintTotalPages{得到;私有集;}publicboolHasPrevPage{得到;私有集;私有集;}publicintTotalCount{得到;私有集;}privatePagingUtil(){}publicPagingUtil(intpageNumber,intvisiblePerPage,inttotalCount){...此处设置属性值的逻辑...}}我认为在Windows窗体应用程序中使用BindingNavigator控件UI而无需必须指定BindingSource。问题是BindingNavigator仅在设置了BindingSource时才呈现启用状态。将Enabled属性设置为true在设计器和代码中都没有得到尊重,而且我似乎找不到库存控制的解决方法或替代方法。是否可以像这样使用BindingNavigator?如果我愿意,我可以创建自定义分页控件,但如果不需要,我宁愿不创建。我今天尝试做类似的事情,最终发明了一些数据对象,BindingNavigator管理这些对象,然后代表数据库中实际数据的页面。可以为BindingSource提供一个IListSource作为其DataSource,然后它将从中提取要绑定的数据列表。PageList类:System.ComponentModel.IListSource{privateconstintitempagesize=250;私人长总计;publicPageList(stringtablename,longtotalrecords){this.TableName=tablename;总项目数=总记录数;}publicboolContainsListCollection{get;保护集;}publicSystem.Collections.IListGetList(){列表页面=newList();inttotalPages=(int)Math.Ceiling((double)totalitems/(double)itempagesize);pages.AddRange(Enumerable.Range(0,totalPages).Select(pageidx=>newItemPage(itempagesize,pageidx*itempagesize)));返回页面;}publicstringTableName{get;保护集;}publicclassItemPage{publicItemPage(intlimit,intoffset){这个。极限=极限;this.Offset=偏移量;}publicreadonlyint限制;公共只读int偏移量;所以我有一个绑定到BindingSource的BindingNavigator,当我想设置可用数据页的总数时,我只是这样做:bsDataPages.DataSource=newPageList(tableName,recordCount);然后在使用导航器时触发绑定源事件处理程序privatevoidbsDataPages_CurrentChanged(objectsender,EventArgse){PageListlist=bsDataPages.DataSourceasPageList;PageList.ItemPagepage=bsDataPages.CurrentasPageList.ItemPage;varitems=m_datastore.GetTableItems(m_conn,list.TableName,page.Limit,page.Offset);我可以从数据库中获取页面的数据。无法覆盖BindingNavigator中的绑定行为。BindingNavigator由ToolStrip和几个支持导航的控件组成。我最终将BindingNavigator中的控件复制到一个新的ToolStrip中,并在那里添加了我的分页支持。以上就是C#学习教程:使用BindingNavigator代替BindingSource,分享全部内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权请点击右侧联系管理员删除。如需转载请注明出处: