提问关于将DataGrid与多个表中的数据进行绑定?

Mr.Osc 2004-05-10 03:37:29
有两个主表comm_table与从表ent_table通过ent_no字段相联,建立两个与源表对应的DataTable并用DbAdapter填充(Fill)成功,同时也用DataRelation关联。

现在需要在一个DataGrid中同时显示两个表中的数据字段,应该采用什么样的方法?

因为我刚接触C#,只想到可以在数据库中建视图,然后再新建一个与数据库视图相对应的DataTable;再或者在映射数据的时候新建立一个可以把两个数据表数据join到一起的DataView。因为初学,思路比较窄,还请各位高手指教。
...全文
142 32 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
32 条回复
切换为时间正序
请发表友善的回复…
发表回复
qij2256 2004-06-20
  • 打赏
  • 举报
回复
1
Mr.Osc 2004-05-12
  • 打赏
  • 举报
回复
to BlueLevin(蔚蓝闪电):
你想回答什么问题?
BlueLevin 2004-05-12
  • 打赏
  • 举报
回复
SqlConnection cn=new SqlConnection("数据库链接字符串");
SqlCommand cmd=new SqlCommand("查询字符串",cn);
SqlDataAdapter da=new SqlDataAdapter(cmd);
DataSet ds=new DataSet();
da.Fill(ds);
dataGrid1.DataSource=ds;
这就完了,如果你要用视图的话如下:

DataView dv=new DataView(ds.Tables[0].DefaultView);
dataGrid1.DataSource=dv;
Mr.Osc 2004-05-12
  • 打赏
  • 举报
回复
to gcgdru(地球人):
我查了一下,仍然查不出你说的第二种方法如何实现。
Mr.Osc 2004-05-12
  • 打赏
  • 举报
回复
to orswanic():
太感谢了,你的资料正是我希望的解决方法,在数据映射的时候没有添加额外的数据集。但例子中扩展的DataGridColumnStyle是只读的,不过我想更新问题是可以通过修改代码解决的,结帖了……
orswanic 2004-05-12
  • 打赏
  • 举报
回复
这个问题,以上说的可以称之为解决方法,但我感觉思考的方向好象有偏差,为什么不可以在表现层下功夫呢?
我查了一下资料,觉得这个应该是楼主想要的:
http://support.microsoft.com/default.aspx?scid=kb;en-us;Q319076
firstshui 2004-05-11
  • 打赏
  • 举报
回复
关注~
firstshui 2004-05-11
  • 打赏
  • 举报
回复
关注中……
Mr.Osc 2004-05-11
  • 打赏
  • 举报
回复
to gcgdru(地球人):
Windows application形式。
NEO 2004-05-11
  • 打赏
  • 举报
回复
不知你是在windows程序里用呢,还是web(asp.net)中应用呢
Mr.Osc 2004-05-11
  • 打赏
  • 举报
回复
to orswanic():
非常感谢参与此帖,再讨论一轮再给分。

to gcgdru(地球人):
显示风格的问题是有一定的原因造成的,但这里不是讨论重点。
你说的第一种方法在dataGrid.AllowNavigation = true的情况下可以在一个DataGrid中显示主从表数据,但从表的显示标题还有显示的列难于定制(可能是因为我对DataGrid的使用还不是很了解),所以不想采用;再有,如果一个表通过多个关系和多个表关联,那么显示的结果更加杂乱。
第二种方法我觉得和其他几位高手的方法不同,可能是另一种类型的解决方法,烦劳你说得具体一点或是贴出一些示例代码便于讨论。
非常感谢!
orswanic 2004-05-11
  • 打赏
  • 举报
回复
我个人觉得sz_Carol()的方法是可以解决问题的。
在进行表映射的时候我比较倾向于使用DataViewManager,在不存在同一个DataTable对应多个视图的情况下比较便于管理。
按照sz_Carol()的方法,如果对主从表的数据存在更新的需求,那么当你使用JOIN的SQL语句生成一个DataTable之后,UpdataCommand之类的CommandText是需要自己手动编写的,SQL语言的UPDATE和INSERT语句不象SELECT处理主从表那么灵活,虽然可以通过存储过程解决,但我通常会在开始的时候就在数据库中建立视图,DataTable的数据直接从数据库视图中SELECT,这样更新插入什么的CommandText更易于编写。

给你一个FAQ的链接,在处理DataGrid的其他问题时会有一些参考
http://www.syncfusion.com/FAQ/WinForms/default.asp#44
NEO 2004-05-11
  • 打赏
  • 举报
回复
不清楚你这样显示有什么用途,不过实现起来方法还是有一些的。
1. 用sql语句将表连接,然后fill到一个dataset里,然后,datagrid.datasource=dataset.
2. 先将从表中的数据显示到datagrid中,然后在datagrid绑定数据时根据从表ent_no,将主表表中数据显示出来;
虽然还有一些方法,但我个人觉得这两种方式比较容易理解.不过真正应用起来你的这种显示方式应该不会很多,一般应该是先显示主表的数据,需要看明细数据时在根据所选的主表数据从数据库中再查从表数据
Mr.Osc 2004-05-10
  • 打赏
  • 举报
回复
自己再UP一次吧,希望这个帖子还能让我再学到一些东西。
Mr.Osc 2004-05-10
  • 打赏
  • 举报
回复
to wangsaokui(无间道II(前传)),sz_Carol():
那个帖子的分已经送了,希望继续关注本帖,谢谢!
Mr.Osc 2004-05-10
  • 打赏
  • 举报
回复
to sz_Carol():
非常感谢你的参与,我觉得你的方法是可以解决问题的,但是好象在有些情况下比较麻烦。我查了一下论坛以往的帖子,这方面的讨论没有太深入的,我想看看大家继续讨论的结果再结帖,所以开了个帖子先给你送点分:
http://expert.csdn.net/Expert/topic/3050/3050966.xml?temp=.8670313
你去领一下吧,再次感谢。
sz_Carol 2004-05-10
  • 打赏
  • 举报
回复
界面上数据发生变化的时候,响应DataTable.RowChanged事件(这里的DataTable指的是A_B_Join),在事件处理函数中去同步A和B.
sz_Carol 2004-05-10
  • 打赏
  • 举报
回复
我处理的多为数据只读的情况。如果数据需要维护,有两个办法:
1、只加载Join的结果,绑定Join的结果;这样数据回写的时候稍微麻烦一些;
2、还是加载三个表:A、B、A_B_Join,绑定A_B_Join,界面上数据发生修改的时候,去同步A或者B。这样数据回写的时候,由于A、B直接反映了数据库的原型,所以很容易。
Mr.Osc 2004-05-10
  • 打赏
  • 举报
回复
最近我这里访问CSDN时行时不行,也不知道怎么了。。。
等着高手们发表看法啊。。。
Mr.Osc 2004-05-10
  • 打赏
  • 举报
回复
to stdotleo(大雨仔):嗯……不好意思,你能说得再具体一点er么?
sz_Carol()的方法我用过,但是有一个问题就是不能很好的保证数据集中DataTable数据的同步。我现在就是想知道有没有根本解决这个问题的方法,比如从控件和数据组件绑定的设计入手的方法。
假设dataTableA对应数据库表"A_table",dataTableB对应数据库表"B_table",而dataTableJoin是SELECT * FROM A_table JOIN B_table。
controlA->dataTableA->A_table的修改并不能反应在dataTableJoin中也不能反应到controlJoin中了。
加载更多回复(12)
AspNetPager7.2分页控件及Demo源码 分页是Web应用程序中最常用到的功能之一,在ASP.NET中,虽然自带了一个可以分页的DataGrid(asp.net 1.1)和GridView(asp.net 2.0)控件,但其分页功能并不尽如人意,如可定制性差、无法通过Url实现分页功能等,而且有时候我们需要对DataList和Repeater甚至自定义数据绑定控件进行分页,手工编写分页代码不但技术难度大、任务繁琐而且代码重用率极低,因此分页已成为许多ASP.NET程序员最头疼的问题之一。 AspNetPager针对ASP.NET分页控件的不足,提出了与众不同的解决asp.net中分页问题的方案,即将分页导航功能与数据显示功能完全独立开来,由用户自己控制数据的获取及显示方式,因此可以被灵活地应用于任何需要实现分页导航功能的地方,如为GridView、DataList以及Repeater等数据绑定控件实现分页、呈现自定义的分页数据以及制作图片浏览程序等,因为AspNetPager控件和数据是独立的,因此要分页的数据可以来自任何数据源,如SQL Server、Oracle、Access、mysql、DB2等数据库以及XML文件、内存数据或缓存中的数据、文件系统等等。 AspNetPager 7.2 版发布 新增属性 PagingButtonLayoutType,可设置分页导航元素(数字页索引、上页、下页、首页和尾页)的布局方式,该属性值是一个PagingButtonLayoutType枚举,通过设置该属性为PagingButtonLayoutType.UnorderedList或PagingButtonLayoutType.Span,允许将这些分页导航元素包含在
  • 标签之间,以便于为这些分页元素应用CSS样式。 新增 PagingButtonClass 与 PagingButtonStyle 属性,可以单独为分页导航按钮(数字页索引、上页、下页、首页和尾页)设置CSS样式; 新增 FirstLastButtonClass 与 FirstLastButtonStyle 属性,可以单独为首页和尾页分页导航按钮设置CSS样式,如果该属性未设置,但指定了PagingButtonClass 与 PagingButtonStyle 属性的值,则首页和尾页按钮样式将使用 PagingButtonClass 与 PagingButtonStyle 属性中指定的样式; 新增 NextPrevButtonClass 与 NextPrevButtonStyle 属性,可以单独为上页和下页分页导航按钮设置CSS样式,如果该属性未设置,但指定了PagingButtonClass 与 PagingButtonStyle 属性的值,则上页和下页按钮样式将使用 PagingButtonClass 与 PagingButtonStyle 属性中指定的样式; 新增 MoreButtonClass 与 MoreButtonStyle 属性,可以单独为更多页(...)分页导航按钮设置CSS样式,如果该属性未设置,但指定了PagingButtonClass 与 PagingButtonStyle 属性的值,则上页和下页按钮样式将使用 PagingButtonClass 与 PagingButtonStyle 属性中指定的样式; 新增属性 ShowMoreButtons ,可以指定是否显示更多页按钮; 新增属性 CurrentPageButtonPosition ,可设置在每次分页后,当前页数字索引在所有的数字页索引中的显示位置,该属性值是一个PagingButtonPosition枚举,对应的值及说明如下: Beginning:当前页数字索引总是显示在所有数字页索引的最前面; End:当前页数字索引总是显示在所有数字页索引的最后面; Center:当前页数字索引总是显示在所有数字页索引的中间; Fixed:默认值,固定不变; 控件的CssClass属性仅应用于控件的窗口元素(div),将不再应用于下属分页元素; 废止属性CenterCurrentPageButton,可以用CurrentPageButtonPosition属性取代; 修改CurrentPageIndexn属性,允许在程序中任何地方以编程方式设置CurrentPageIndex的值来动态指定当前页,直接设置该属性的值时将同时引发PageChanging和PageChanged 事件,实现和点击分页按钮一样的分页功能; 修正了7.1版中设置SubmitButtonImageUrl属性后,Postback回发分页方式情况下点击数字页索引按钮不引发分页事件的bug; 修正了使用Url分页时,如果页面上没有服务器端form控件时无法注册客户端脚本的bug,从7.2版起如果使用Url分页并且ShowPageIndexBox属性没有设置为Never时, AspNetPager控件必须放在
    标记之间,若使用Url分页并且ShowPageIndexBox为Never时,页面上可以不使用服务器端form控件。 AspNetPager的主要功能: 1、支持通过Url进行分页: AspNetPager除提供默认的类似于DataGrid和GridView的PostBack分页方式外,还支持通过Url进行分页,象大多数asp程序中分页一样, Url分页方式允许用户通过在浏览器地址栏中输入相应的地址即可直接进入指定页面,也可以使搜索引擎搜索到所有分页的页面的内容,因此具有用户友好和搜索引擎友好的优点,关于Url分页与PostBack分页方式的差异,请参考Url与PostBack分页方式的对比。 2、支持Url分页方式下的Url重写(UrlRewrite)功能 Url重写技术可以使显示给用户的Url不同于实际的Url,Url重写技术被广泛应用于搜索引擎优化(SEO)、网站重组后重定向页面路径以及提供用户友好的Url等方面, AspNetPager支持Url重写技术使您可以自定义分页导航的Url格式,实现Url重写; 3、支持使用用户自定义图片做为导航元素: 您可以使用自定义的图片文件做为分页控件的导航元素,而不仅仅限于显示文字内容。 4、功能强大灵活、使用方便、可定制性强: AspNetPager分页控件的所有导航元素都可以由用户进行单独控制,从6.0版起,AspNetPager支持使用主题(Theme)与皮肤(Skin)统一控件的整体样式,配合asp.net 2.0中的DataSource控件,AspNetPager只需要编写短短几行代码,甚至无需编写任何代码,只需设置几个属性就可以实现分页功能。 5、增强的 Visual Studio 2005/2008设计时支持 增强的设计时支持使控件在设计时更加直观,易于使用,开发快捷方便。 6、兼容IE6.0+及FireFox 1.5+等浏览器 7、丰富而完整的控件文档和示例项目: 控件附带的完整的帮助文档及示例项目能够帮助您快速上手,熟悉AspNetPager控件的使用,您还可以通过给作者留言以及论坛提问等方式解决控件使用中遇到的问题

    111,098

    社区成员

    发帖
    与我相关
    我的任务
    社区描述
    .NET技术 C#
    社区管理员
    • C#
    • AIGC Browser
    • by_封爱
    加入社区
    • 近7日
    • 近30日
    • 至今
    社区公告

    让您成为最强悍的C#开发者

    试试用AI创作助手写篇文章吧