CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
花落谁家,你作主! 盛大widget设计大赛英雄榜
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  ASP.NET

在Visual Studio.Net 里如何绑定数据到DataGrid呀

楼主sailor76(快乐的水手)2003-08-01 00:13:07 在 .NET技术 / ASP.NET 提问

我刚开始学习在Visual   Studio.Net里开发Asp.Net程序,但一开始就碰到一个问题,就是解决不了,希望各位给以解答。  
   
  我在Visual   Studio.Net使用DataGrid的属性生成器绑定到DataSet的  
  ,此DataSet是使用OleDbDataAdapter自动生成,但运行时DataGrid◆只显示标题行,不显示纪录◆,我保证我的SQL没问题,在OleDbDataAdapter预览数据数据也有记录的。不知道VS.Net自动生成的代码处理了什么?  
     
  我加入了如下代码,依然不起作用:      
     
  Private     Sub     Page_Load(...)     Handles     MyBase.Load      
                                '在此处放置初始化页的用户代码      
                                '下面这一行Fill对吗?可是也没什么效果      
                                OleDbDataAdapter1.Fill(DataSet21,         "MyTable1")      
                                DataGrid1.DataSource     =     DataSet21.Tables(     "MyTable1     ").DefaultView      
                                DataGrid1.DataBind()      
  End     Sub        
   
  有时还显示:表已被独占打开,或没有访问数据库的权限。  
   
  ——我使用的是Access数据库,没有任何安全性设置的。  
   
  ◆另外,我将使用NotePad编辑的一个listbox.aspx添加到vs.net项目里,原来运行正常的页面也是一条记录都不显示,怪怪怪!!!!!!!!  
  代码如下:  
  <%@   Import   Namespace="System.Data.OleDb"   %>  
  <%@   Import   Namespace="System.Data"   %>  
  <%@   Page   Language="vb"   Runat="Server"   ContentType="text/html"   ResponseEncoding="gb2312"   CodeBehind="ListBox.aspx.vb"   AutoEventWireup="false"   Inherits="ams.ListBox"   %>  
  <HTML>  
  <HEAD>  
  <title>无标题文档</title>  
  <meta   http-equiv="Content-Type"   content="text/html;   charset=gb2312">  
  </HEAD>  
  <body>  
  <form   runat="server">  
  <asp:listbox   ID="lbxEmployees"   runat="server"   AutoPostBack="true"   Rows="10"   OnSelectedIndexChanged="subListChange"   />  
  <hr>  
  <asp:datagrid   ID="dgEmployee"   runat="server"   />  
  </form>  
  <script   language="VB"   runat="server">  
  Sub   Page_Load(Source   as   Object,   E   as   EventArgs)  
  If   Not   IsPostBack   Then  
  Dim   strConnection   as   String   =   ConfigurationSettings.AppSettings("NWind")  
   
  Dim   strSQLforListBox   as   String   =   "Select   (姓氏   +   名字)   as   姓名,雇员ID   "   &   _  
  "From   雇员   Order   by   姓氏"  
  Dim   objConnection   as   New   OleDbConnection(strConnection)  
  Dim   objCommand   as   New   OleDbCommand(strSQLforListBox,   objConnection)  
   
  objConnection.Open()  
  lbxEmployees.DataSource   =   objCommand.ExecuteReader()  
  lbxEmployees.DataTextField   =   "姓名"  
  lbxEmployees.DataValueField   =   "雇员ID"  
  lbxEmployees.DataBind()  
  objConnection.Close()  
  End   If  
  End   Sub  
   
  Sub   subListChange(Source   as   Object,   E   as   EventArgs)  
  'Response.Write("subListChange   triggered")  
  Dim   strConnection   as   String   =   "Provider=Microsoft.Jet.OLEDB.4.0;Data   Source=C:\Inetpub\wwwroot\test\NorthWind.mdb;Persist   Security   Info=False"  
   
  Dim   strSQLforGrid   as   String   =   "Select   雇员ID,   姓氏,   名字,   尊称,   职务,   城市,   地址,   邮政编码   "   &   _  
  "From   雇员   Where   雇员ID   =   "   &   _  
  lbxEmployees.SelectedItem.Value  
   
  Dim   objConnection   as   New   OleDbConnection(strConnection)  
  Dim   objCommand   as   New   OleDbCommand(strSQLforGrid,   objConnection)  
   
  objConnection.Open()  
  dgEmployee.DataSource   =   objCommand.ExecuteReader()  
  dgEmployee.DataBind()  
  objConnection.Close()  
  End   Sub  
  </script>  
  </body>  
  </HTML>  
   
  问题点数:0、回复次数:13Top

1 楼BabyTree(小树)回复于 2003-08-01 08:22:34 得分 0

在ACCESS2000中数据库是不是已经打开!Top

2 楼xinyu_1980(心雨)回复于 2003-08-01 09:02:56 得分 0

问题应该出在  
  dgEmployee.DataSource   =   objCommand.ExecuteReader()  
  这一句上.  
  objCommand.ExecuteReader()只返回一个Reader  
  要通过Reader.read才能获取数据.  
   
   
   
   
  Top

3 楼Fortune2k1(Forune2k1)回复于 2003-08-01 09:12:02 得分 0

Private     Sub     Page_Load(...)     Handles     MyBase.Load      
                                '在此处放置初始化页的用户代码      
                                '下面这一行Fill对吗?可是也没什么效果      
                                OleDbDataAdapter1.Fill(DataSet21,         "MyTable1")      
                                DataGrid1.DataSource     =     DataSet21.Tables(     "MyTable1     ").DefaultView     ''''''''''''''''''''''''''''''''''多一空格你.  
                                DataGrid1.DataBind()      
  End     Sub        
  改成:  
  Private     Sub     Page_Load(...)     Handles     MyBase.Load      
  if   not   ispostback   then            
                      '在此处放置初始化页的用户代码      
                                '下面这一行Fill对吗?可是也没什么效果      
                                OleDbDataAdapter1.Fill(DataSet21,         "MyTable1")      
                                DataGrid1.DataSource     =     DataSet21.Tables(     "MyTable1     ").DefaultView      
                                DataGrid1.DataBind()    
  end   if    
  End     SubTop

4 楼Fortune2k1(Forune2k1)回复于 2003-08-01 09:19:13 得分 0

objCommand.ExecuteReader()  
  第一次执行这句话,指向BOF  
  dim   dr   as   New   SqlClient.SqlDataReader  
  dr=cmd.executereader   '当前指向BOF,即上溢出.  
  dim   rowRhett   as   new   row  
  rowRhett=dr.read           '指向第一条记录.Top

5 楼goody9807(http://goody9807.cnblogs.com)回复于 2003-08-01 09:26:54 得分 0

Function   bind(ByVal   dg   As   DataGrid,   ByVal   t_name   As   String)  
                  Dim   dad   As   OleDbDataAdapter  
                  Dim   dadstr   As   String  
                  Dim   dtb   As   DataTable  
                  Dim   con   As   OleDbConnection  
                  Dim   str   As   String  
                  Dim   rid   As   Int64  
                  Dim   drow   As   DataRow  
                  Dim   dst   As   New   DataSet()  
                  rid   =   Session("residentid")  
                  str   =   session("constr")  
                  con   =   New   OleDbConnection(str)  
                  dadstr   =   "select   *   from   "   +   t_name   +   "   where   residentid="   +   CStr(rid)  
   
                  dad   =   New   OleDbDataAdapter(dadstr,   con)  
                  dad.Fill(dst,   t_name)  
                  dg.DataSource   =   dst  
                  dg.DataBind()  
   
          End   FunctionTop

6 楼nighting1029(一个人的日子)回复于 2003-08-01 09:32:11 得分 0

Private     Sub     Page_Load(...)     Handles     MyBase.Load      
                                '在此处放置初始化页的用户代码      
                                '下面这一行Fill对吗?可是也没什么效果      
                                OleDbDataAdapter1.Fill(DataSet21,         "MyTable1")      
                                DataGrid1.DataSource     =     DataSet21.Tables(     "MyTable1     ").DefaultView      
                                DataGrid1.DataBind()      
  End     Sub        
   
   
   
  这段代码在我这里是这样的  
  sqlDataAdapter1.Fill(dataSet11);  
  DataGrid1.DataBind();  
  好象这样就可以了。第二个问题也想请教,我的机子上试运行language="c#",好象常提示说没有这个那个库,什么都能运行Top

7 楼nice90(我爱射雕,更爱蓉儿)回复于 2003-08-01 09:36:06 得分 0

dgEmployee.DataSource     =     DataSet21.Tables(     "MyTable1     ").DefaultView     ''''''''''''''''''''''''''''''''''多一空格你.  
  dgEmployee.DataBind()Top

8 楼sailor76(快乐的水手)回复于 2003-08-01 20:25:24 得分 0

BabyTree(小树):我的access数据库保证没有打开.之所以出现这个错误,我想可能是VS.net生成的代码已经打开了这个数据库.  
  ____________________________________________  
  To:Fortune2k1(Forune2k1)   and   nice90(我爱射雕,更爱蓉儿)    
   
  那个空格是拷贝的时候不知怎么增加的,源代码并没有错.  
  ____________________________________________  
    xinyu_1980(心雨)   :objCommand.ExecuteReader()也没有问题,因为如果这段代码不是在vs.net下面,运行是正常的  
   
  ____________________________________________  
    nighting1029(hehe):sqlDataAdapter1.Fill()方法有六个重载的形式,你的和我的都是对的.  
   
  ____________________________________________  
   
  ◆还有熟悉VS.Net的吗?我想知道的是VS.net在后面作了什么,我又需要做些什么  
   
  Top

9 楼debug2003(DEBUG)回复于 2003-08-01 21:16:42 得分 0

关注   我也正在开始学习    
  Top

10 楼sailor76(快乐的水手)回复于 2003-08-02 19:45:35 得分 0

向上顶一顶Top

11 楼panyee(快乐王子)回复于 2003-08-02 20:26:37 得分 0

分区是否ntfs?   对access所在文件和目录,   aspnet用户要有权读写  
  Top

12 楼yjtc(灵长目)回复于 2003-08-02 21:44:10 得分 0

up  
   
   
  |================|  
  |先天性缺乏人民币|  
  |================|  
  Top

13 楼sailor76(快乐的水手)回复于 2003-08-08 12:34:48 得分 0

SQL   Server的问题已经解决,但Access的错误依旧。  
   
  SQL   Server出错是因为自动生成的ConnectionString中没有包含密码的缘故。  
   
  可Access   就奇怪了,仍然提示“表已被独占打开,或没有访问数据库的权限”。我保证对Access数据库的目录拥有任何权限Top

相关问题

  • about Visual Studio .NET
  • Microsoft Visual Studio .NET 2003
  • 哪有visual studio .net下载
  • Visual studio .NET 如何安装?
  • 如何安装Visual studio .NET?
  • 请问visual studio .net cdkey
  • 如何安装VISUAL STUDIO。NET?
  • 去哪搞visual studio .net 啊?
  • visual studio .net安装失败
  • Visual Studio .NET 编程大奖赛

关键词

  • .net
  • vs.net

得分解答快速导航

  • 帖主:sailor76

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo