请教大虾apache+asp.net2环境 gridview无法动态绑定问题(200分)

zhangning111 2009-03-24 10:19:17
环境apache + mod_aspdotnet r2
想使用gridview显示数据,与dataset绑定时无效,测试dataset里有数据。
同样的方法在winform下有效,在iis下也可以,请大虾指点迷津,非常感谢
代码如下:
aConnection = new SqlConnection(getConnectionString());
aAdapter = new SqlDataAdapter();
aHRDataSet = new DataSet();

SqlCommand aSqlCommand = new SqlCommand();
aSqlCommand.Connection = aConnection;
aConnection.Open();
aSqlCommand.CommandText = "select * from creHR";
aAdapter.SelectCommand = aSqlCommand;
aAdapter.Fill(aHRDataSet);
aConnection.Close();

//关键是下面两句,这么用好像不行
GridView1.DataSource = aHRDataSet.Tables[0];
GridView1.DataBind();
...全文
134 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangning111 2009-03-26
  • 打赏
  • 举报
回复
最后顶一次,下班前结帖。
wxd024 2009-03-25
  • 打赏
  • 举报
回复
帮顶,没用过
benbirdar 2009-03-25
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 lincyang 的回复:]
看你在11楼的回复,text有数据说明数据库连接取数都没问题。

那你gridview的visible=true没啊?
[/Quote]

晕,这个都想到了,哈哈,要是这个BUG那就真笑死了,以前就有同事这么做过!
所有的都搞好了,结果是gridview的visible属性为false没发现!
全速前行 2009-03-25
  • 打赏
  • 举报
回复
看你在11楼的回复,text有数据说明数据库连接取数都没问题。

那你gridview的visible=true没啊?
全速前行 2009-03-25
  • 打赏
  • 举报
回复
//关键是下面两句,这么用好像不行
GridView1.DataSource = aHRDataSet.Tables[0];

应该是GridView1.DataSource = aHRDataSet.Tables[0].DefaultView;
wangzhenyue 2009-03-25
  • 打赏
  • 举报
回复
GridView1.DataSource = aHRDataSet.Tables[0].DefaultView;
在WINFORM与WEB 程序绑定不一样啊.
//GridView1.DataBinding();
//GridView1.DataBind();
Teng_s2000 2009-03-25
  • 打赏
  • 举报
回复
lz还想把asp.net程序转移到Apache上?那就直接开发jsp吧
zhangning111 2009-03-25
  • 打赏
  • 举报
回复
自己顶
zhangning111 2009-03-25
  • 打赏
  • 举报
回复
在iis下没这句似乎也行,在apache下就不行,不知道是不是iis下默认GridView1.AutoGenerateColumns = true,
apache下默认GridView1.AutoGenerateColumns = false。

to 21 22楼:
虽然不是这个问题,但是这个也值得注意。

to 19楼:
看7楼回复

下面是部分代码。放两天结贴。
动态添加列:
GridView1.AutoGenerateColumns = false;
// 清空所有的Columns
GridView1.Columns.Clear();

foreach (DataColumn item in aHRDataSet.Tables[0].Columns)
{
BoundField col = new BoundField();
col.HeaderText = item.ColumnName;
col.DataField = item.ColumnName;
col.Visible = true;
GridView1.Columns.Add(col);
}

0数据处理:
if (aHRDataSet.Tables[0].Rows.Count == 0)
{
aHRDataSet.Tables[0].Rows.Add(aHRDataSet.Tables[0].NewRow());
GridView1.DataSource = aHRDataSet.Tables[0];
GridView1.DataBind();
int columnCount = GridView1.Rows[0].Cells.Count;
GridView1.Rows[0].Cells.Clear();
GridView1.Rows[0].Cells.Add(new TableCell());
GridView1.Rows[0].Cells[0].ColumnSpan = columnCount;
GridView1.Rows[0].Cells[0].Text = "没有任何记录!";
GridView1.RowStyle.HorizontalAlign = System.Web.UI.WebControls.HorizontalAlign.Center;
}
else
{
GridView1.DataSource = aHRDataSet.Tables[0];
GridView1.DataBind();
}
zhangning111 2009-03-25
  • 打赏
  • 举报
回复
原来是少了这句
GridView1.AutoGenerateColumns = true;

更好的方法是写程序动态加列。
不过有一个问题,在无数据时gridview不显示表头。解决方法是往gridview手动加个空列。不过这个方法不适用于使用objectdatasource来绑定数据的情况。分页部分又得自己写。真是麻烦
路人乙e 2009-03-24
  • 打赏
  • 举报
回复
数据库路径使用计算机名试下
gongsun 2009-03-24
  • 打赏
  • 举报
回复
up
Jcomet 2009-03-24
  • 打赏
  • 举报
回复
GridView1.DataSource = aHRDataSet.DefaultTable;
GridView1.DataBind();
zhangning11111 2009-03-24
  • 打赏
  • 举报
回复
zhangning11111 2009-03-24
  • 打赏
  • 举报
回复
zhangning111 2009-03-24
  • 打赏
  • 举报
回复
to benbirdar:
实际代码还有一句TextBox1.Text = aHRDataSet.Tables[0].Rows[1]["name"].ToString();
可以取到数据,说明sql已经执行了。

GridView1.DataSource = aHRDataSet;无效,貌似在winform中也不能这么用吧



zhangning111 2009-03-24
  • 打赏
  • 举报
回复
benbirdar 2009-03-24
  • 打赏
  • 举报
回复
代码没看出有什么错误,
你确定dataSet有数据吗?dataSet的Tables[0]有没有数据?
试试直接给dataSource赋dataSet看看:


GridView1.DataSource = aHRDataSet;
GridView1.DataBind();
zhangning11111 2009-03-24
  • 打赏
  • 举报
回复
顶顶更健康
zhangning11111 2009-03-24
  • 打赏
  • 举报
回复
加载更多回复(5)

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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