- 01
- 8月
今天做了个WebService的客户代理WebForm,要将WebService返回的DataSet中的表显示出来。
说到显示表格数据,最先想到的自然是GridView控件,然而教科书上给的DataSet全是在aspx前台文件里绑定到一个DataSource控件上的。而这个WebService返回的DataSet中有多个表,这些表在WSDL里又没有描述,所以无法用GUI搞定数据绑定。只有用代码了。
稍微上网查了一下,又试验了一下发现,其实这东西真的很简单——只要把支持的对象赋给GridView的DataSource属性就可以了。不过赋完值之后得显式地调用一下DataBlinding()方法,不然数据不会被显示出来。
如:
myGridView.DataSource = serviceReturnDataSet.Tables[“theTable”];
myGridView.DataBind();
这就OK了。
不过这样绑定有个很明显的问题:GirdView的列标题显示的都是服务器返回的值,对用户很不友好。怎样才能在代码中修改GridView的表头呢?
又是一番查找和尝试。找到了两个解决方案:
1.在前台aspx文件中实现
点击GirdView右上角的三角,在“GirdView任务”中选择“编辑列…”。取消掉“自动生成字段”的选择,手动添加与返回数据列数相等个BoundField字段,将它们的DataField属性手动设为需要绑定数据的每列的列名,HeaderText属性设为想要显示的名称。
确定后应该生成类似以下代码:
<asp:GridView ID=”scores” runat=”server” AutoGenerateColumns=”False” >
<Columns>
<asp:BoundField DataField=”C_name” HeaderText=”课程名称” />
<asp:BoundField DataField=”C_teacher” HeaderText=”教师” />
<asp:BoundField DataField=”C_hours” HeaderText=”学时” />
<asp:BoundField DataField=”C_scores” HeaderText=”学分” />
<asp:BoundField DataField=”scores” HeaderText=”成绩” />
</Columns>
</asp:GridView>
这样默认显示的“C_name”就会变成“课程名称”。而且利用这种方法还可以控制某些列是否显示。
2.在后台.cs代码中实现
只需在调用DataBlinding()方法前,改变GridView对应Columns的HeaderText属性即可。例:
myGirdView.Columns[1].HeaderText = “aaa”;
注意,该语句必需出现在myGirdView.DataBlinding();之前,否则不起作用。
2008年01月06日 星期日 9:45 下午
谢谢,老没有myGridView.DataBind();结果显示不出来,搞了大半天
2010年07月23日 星期五 3:58 上午
Good!~
2011年12月15日 星期四 8:39 下午
注意,该语句必需出现在myGirdView.DataBlinding();之前,否则不起作用。
这一句写错了,应该是databind()