如何解决ASP.net以编程方式将数据集绑定到gridview
| 我有一个约15列的数据集,并且我还有一个ASP.net gridview。我想知道是否有人知道如何用数据集填充gridview,但是问题是我只想要数据集中的一些列。 此刻我正在做 GridView1.DataSource = ds;
GridView1.DataBind();
但这显然会将数据集中的所有列绑定到gridview。
解决方法
所以您要在运行时创建列?尝试这个:
http://www.codeproject.com/KB/aspnet/dynamic_Columns_in_Grid.aspx
或者,您可以提前在aspx中配置gridview:
<Columns>
<asp:BoundField DataField=\"ProductName\" HeaderText=\"Product\" SortExpression=\"ProductName\" />
<asp:BoundField DataField=\"CategoryName\" HeaderText=\"Category\" ReadOnly=\"True\" SortExpression=\"CategoryName\" />
<asp:BoundField DataField=\"UnitPrice\" DataFormatString=\"{0:c}\" HeaderText=\"Price\" HtmlEncode=\"False\" SortExpression=\"UnitPrice\" />
</Columns>
并确保将AutoGenerateColumns设置为false。
, 默认情况下,GridView将根据绑定的数据自动生成所有列。
设置GridView.AutoGenerateColumns = false
,然后通过GridView.Columns
属性定义所需的列。
, 我可以看到两种方法来完成此操作,具体取决于您可以更改的内容以及必须保持的样子:
1)如果您对生成数据集的查询/过程具有控制权,并且可以在不对其他网格/页面产生不利影响的情况下进行控制,请修改查询,使其仅选择您使用的列。您仍然可以在JOIN和WHERE中使用未选择的列,并且不必将每个列都添加到ORDER BY中即可获得额外的好处。
2)如果您仅控制网格及其生成的代码,则可以将其设置为DataGrid参数,将AutoGenerateColumns = false,然后嵌套在您的DataGrid中,以显示需要显示的BoundFields。这也使您可以格式化,创建列名等。
如果您可以同时完成这两项操作,则网格加载速度也应该更快。
, 将网格AutoGeneratedColumns设置为false,并设置要在gridview设计器或代码中使用的列。但是您必须将列的DataField属性设置为与
, SqlCommand comm = new SqlCommand(\"Select required fields from YourTable,conn);
conn.Open();
SqlDataReader rdr = comm.ExecuteReader();
GridView1.DataSource = rdr;
GridView1.DataBind();
rdr.Close();
这将仅打印必填字段。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。