• 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();之前,否则不起作用。

标签:

您可以对这篇文章发表一条评论,或者在您自己的网站中引用 (Trackback) 它

对《靠代码绑定GridView的数据源》有 3 条评论

  1. wfs 说:

    谢谢,老没有myGridView.DataBind();结果显示不出来,搞了大半天

  2. Cheney 说:

    Good!~

  3. hkk 说:

    注意,该语句必需出现在myGirdView.DataBlinding();之前,否则不起作用。
    这一句写错了,应该是databind()

发表一条评论

所有标签:.net Ajax Java javascript Linux map MySQL RSS TD-SCDMA Ubuntu vim web Win7 乱码 基础知识 备份 奥运会 希望泉 性能 缓存 编程