刚开始学习ASP.NET,有一问题请教代码如下:using   NorthwindTableAdapters; 
Page_Load(object   sender,   EventArgs   e) 
        { 
            ProductsTableAdapter   productsAdapter   =   new ProductsTableAdapter(); 
                GridView1.DataSource   =   productsAdapter.GetProducts(); 
                GridView1.DataBind(); 
        } 
}     代码我基本能看懂,唯一不明白的是using NorthwindTableAdapters;    按例程的说法,这是对一个强类型的DataAdapter class 引用,using后才能实例化ProductsAdapter。    可是我按例程的操作时只在DataSet Northwind中定义了ProductsTableAdapter 并没有定义过NorthwindTableAdapters.我怎么知道在这里要输入NorthwindTableAdapters,而不是别的名称呢?GOOGLE过后,在一论坛里发现有人说NorthwindTableAdapters.ProductsTableAdapter 是由系统自动生成的请问,我能在什么地方看到这些由系统生成的名称呢?

解决方案 »

  1.   

    这个是在项目中添加DataSet数据集后通过配置产生的,你可以找本书看看或是到msdn帮助上看看。
      

  2.   

    类视图中看,vs--视图--类视图 快捷键为 ctrl+shift+C
      

  3.   

    NorthwindTableAdapters 是你配置dataset 数据集时,自动生成的。你可以查查adapter
      

  4.   

    NorthwindTableAdapters 这个是自己写的一个类库!
      

  5.   

    在solution中搜索ProductsTableAdapter。
    它应该在vs生成的一个cs文件中。找到这个类定义在哪个namespace中。using这个namespace即可。
      

  6.   

    建议在,load事件里,写上if(!IsPostBack)
    {
        //数据绑定
        //试试,你就明白了
    }
      

  7.   

    没错,我配置dataset : Northwind的时候自动产生这个namespace的,找了半天没发现系统在什么定义的。是不是意味着,我配置一个名为ABC的DATASET时,系统就一会产生一个名为ABC+TableAdapters的namespace?
      

  8.   

    using NorthwindTableAdapters; //自己编写好的数据库适配器的类的命名空间,引入就可以使用其中的类
    http://msdn.microsoft.com/zh-cn/library/bb384426.aspx
      

  9.   


    using NorthwindTableAdapters; //自己编写好的数据库适配器的类的命名空间,引入就可以使用其中的类这个我明白了以下引用自MSDN:
    表示一个 TableAdapter。生成的 TableAdapterManager 对它所管理的每个 TableAdapter 包含一个属性。例如,生成包含 Customers and Orders 表的数据集时还生成一个 TableAdapterManager,它包含 CustomersTableAdapter 和 OrdersTableAdapter 属性这个也好理解,在生成TableAdapter时,能看到。
    我不明白的是,我在名为Northwind的DataSet建了CustomersTableAdapter,OrdersTableAdapter之后
    ,为什么它们会自动包含中NorthwindTableAdapter中?
      

  10.   

    接上这样理解对不对,系统自动产生 CustomersTableAdapter,OrderTableAdapter的同时,然后视它们为其中一方法,在它们外部再生成一个TableAdapter来包含它们,以方便调用。微软真是善解人意。
      

  11.   


    不应该是“建议”,应该是“必须”!如果lz你看到的资料就是那么写的,那么除非它是最初级的没有什么功能的东西,否则我建议你扔掉这个资料。其实即使是最初级的东西,如果作者有个好习惯,也应该写上  if(!IsPostback)。如果你随便往页面上拖入一个什么都不干的Button,也就是它的Click事件处理程序是空的,你测试一下。既然它什么都不干而每一次回发都要重新读取数据库并重新绑定控件,你的程序是多么慢、多么浪费服务器资源。而且也会有很多逻辑错误,因为page_load的职责是恢复上一次Render时输出的控件树状态,好让asp.net可以处理客户端提交的修改来触发所有自己及其各个子控件的事件(还有很多代码没有执行),而重新绑定控件的行为只应该发生在page_Load已经执行完之后的某个方法中。
      

  12.   

    如果你在Scott Mitchell的4、5年前入门书的第一章看到这种代码,快点翻到后几页吧,开始那一篇的代码是粗糙得不像样子的,甚至弄了许多的 Response.Write 烂写html。