BUGReport:datagrid带模板列绑定空数据集出错的问题
2007-02-06 15:33
344 查看
datagrid带模板列绑定空数据集出错的问题:GridView比DataGrid好的原因之一
BUG描述:datagrid带模板列绑定空数据集时会出错,而同样的代码asp.net 2.0中的GridView不会出错(难到MS已经认识到这一点,所以datagrid也被2.0抛弃了,不过gridview继承自不同的基类,害我改oracle,sqlserver,access的三方万能分页控件好辛苦呀)
Bug存在于 asp.net 1.1 asp.net 2.0
测试工具:vs.net 2003,vs.net 2005,vs.net 2005 sp1,SQLserver
测试过程:
setp1:
//无绑定列,采用自动生成
WebForm1.aspx:
<form id="Form1" method="post" runat="server">
<asp:DataGrid ID=DataGrid1 runat=server>
</asp:DataGrid>
</form>
WebForm1.cs:
private void Page_Load(object sender, System.EventArgs e)
{
SqlDataReader Reader2 = DBHelper("select 26 age, 'test' test where 1=0");
DataGrid1.DataSource = Reader2;
DataGrid1.DataBind();
Reader2.Close();
}
SqlDataReader DBHelper(string sql)
{
SqlConnection conn = new SqlConnection("server=localhost;uid=sa;pwd=;database=Northwind");
SqlCommand cmd = new SqlCommand(sql, conn);
conn.Open();
SqlDataReader Reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
return Reader;
}
程序执法成功,DataGrid无显示
setp2:
//绑定列,采用自动生成
WebForm1.aspx:
<form id="Form1" method="post" runat="server">
<asp:DataGrid ID=DataGrid1 runat=server>
<Columns>
<asp:TemplateColumn>
<ItemTemplate>
<asp:CheckBox ID=ck1 runat=server />
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>
</form>
WebForm1.cs:
代码不变
程序执行失败,在做DataGrid1.DataBind()时提示
Invalid attempt to Read when reader is closed.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.InvalidOperationException: Invalid attempt to Read when reader is closed.
同样在asp.net 2.0里,采用带模板列的GridView(只是把GridView的ID也取名为DataGrid1),后台代码不变,执行成功。
<asp:GridView ID=DataGrid1 runat=server>
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:CheckBox ID=ck1 runat=server />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
后记:今天本想去http://www.mscommunity.com/communitywish/ 在线提交BUG的,结果居然发现打开是中华部落阁,不知是MS的这个网站倒闭了还是被恶意抢注了,或是埃塞的DNS解析有问题。以前提交过oracleclient连接的一个问题,在博客园的也写了一下。后来也找到了写这个模块的老外在网上的文章,确认当时写的时候没注意,还提供了一个hotfix。如果这个也算是bug的话,那就是第2个了。^_^0,不过现在非洲,基本什么也访问不了,博客园上不了,csdn上不去,只能写写sohu的blog了。
BUG描述:datagrid带模板列绑定空数据集时会出错,而同样的代码asp.net 2.0中的GridView不会出错(难到MS已经认识到这一点,所以datagrid也被2.0抛弃了,不过gridview继承自不同的基类,害我改oracle,sqlserver,access的三方万能分页控件好辛苦呀)
Bug存在于 asp.net 1.1 asp.net 2.0
测试工具:vs.net 2003,vs.net 2005,vs.net 2005 sp1,SQLserver
测试过程:
setp1:
//无绑定列,采用自动生成
WebForm1.aspx:
<form id="Form1" method="post" runat="server">
<asp:DataGrid ID=DataGrid1 runat=server>
</asp:DataGrid>
</form>
WebForm1.cs:
private void Page_Load(object sender, System.EventArgs e)
{
SqlDataReader Reader2 = DBHelper("select 26 age, 'test' test where 1=0");
DataGrid1.DataSource = Reader2;
DataGrid1.DataBind();
Reader2.Close();
}
SqlDataReader DBHelper(string sql)
{
SqlConnection conn = new SqlConnection("server=localhost;uid=sa;pwd=;database=Northwind");
SqlCommand cmd = new SqlCommand(sql, conn);
conn.Open();
SqlDataReader Reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
return Reader;
}
程序执法成功,DataGrid无显示
setp2:
//绑定列,采用自动生成
WebForm1.aspx:
<form id="Form1" method="post" runat="server">
<asp:DataGrid ID=DataGrid1 runat=server>
<Columns>
<asp:TemplateColumn>
<ItemTemplate>
<asp:CheckBox ID=ck1 runat=server />
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>
</form>
WebForm1.cs:
代码不变
程序执行失败,在做DataGrid1.DataBind()时提示
Invalid attempt to Read when reader is closed.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.InvalidOperationException: Invalid attempt to Read when reader is closed.
同样在asp.net 2.0里,采用带模板列的GridView(只是把GridView的ID也取名为DataGrid1),后台代码不变,执行成功。
<asp:GridView ID=DataGrid1 runat=server>
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:CheckBox ID=ck1 runat=server />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
后记:今天本想去http://www.mscommunity.com/communitywish/ 在线提交BUG的,结果居然发现打开是中华部落阁,不知是MS的这个网站倒闭了还是被恶意抢注了,或是埃塞的DNS解析有问题。以前提交过oracleclient连接的一个问题,在博客园的也写了一下。后来也找到了写这个模块的老外在网上的文章,确认当时写的时候没注意,还提供了一个hotfix。如果这个也算是bug的话,那就是第2个了。^_^0,不过现在非洲,基本什么也访问不了,博客园上不了,csdn上不去,只能写写sohu的blog了。
相关文章推荐
- 关于DataGrid的头模板的绑定问题_AX
- 如何使用动态创建模板列并绑定数据(GridView,Repeater,DataGrid)
- 关于Dropdownlist绑定GridView分页出错问题
- [Blackberry]Bug_build时出错_java build 编码格式问题及解决办法
- jquery easyui datagrid字段绑定问题
- MVVM-Light模式,在dataGrid的模板下,绑定事件不触发的原因已经服务端排序的实现
- 关于使用easyui dataGrid遇到的小bug问题
- 后台绑定datagrid的SelectionItem事件时,anchor为null,致使shift多选出错
- 今天遇到了datagrid中动态添加模板列的问题
- 关于后台生成的模板列的数据绑定问题
- RadioButton加入DataGrid模板列引起的问题。
- DataGridComboBoxColumn绑定后显示空白的问题
- DataGrid的动态绑定问题(二)
- [Bug Report] jQuery EasyUI 1.3 : Datagrid 插件在pageNumber初始值为2(或大于1的任何整数)时存在“页码输入框”显示异常,页码输入框始终为1。
- MVVM-Light模式,在dataGrid的模板下,绑定事件不触发的原因已经服务端排序的实现
- Datagrid数据绑定后,根据不同条件判断显示问题
- Bug?用 DataSource 属性绑定的 GridView 的排序问题
- MVVM-Light模式,在dataGrid的模板下,绑定事件不触发的原因已经服务端排序的实现
- 如何取得DataGrid绑定列和模板列中的值
- wpf datagrid 绑定图片列 资源回收问题