表示层
             <asp:DataGrid ID="DataGrid1" runat =server>
             </asp:DataGrid>业务层
    protected void Page_Load(Object Sender,EventArgs e)
    {
        DataSet DataSet2 = new DataSet();
        DataSet2 = (new AccessTask()).BindNews();
        DataGrid1.DataSource = DataSet2.Tables("0").defaultview;
        DataGrid1.DataBind();
    }
数据层
        public DataSet BindNews()
        {
            OleDbConnection objconn3 = new OleDbConnection("provider=Microsoft.Jet.OleDb.4.0;Data Source="+System .Web.HttpContext .Current .Server .MapPath ("App_Data/UserInfo.mdb"));
            OleDbDataAdapter Adapter1 = new OleDbDataAdapter("Select * from Message",objconn3 );
            DataSet DataSet1 = new DataSet();
            Adapter1.Fill(DataSet1);
            return DataSet1;
        }绑塞定数据的话三层结构是不是应该这样写?
但是现在还有一个问题就是出现了
“System.Data.DataSet.Tables”是“属性”,但在此处被当做“方法”来使用行 23:     protected void Page_Load(Object Sender,EventArgs e)
行 24:     {
行 25:         DataGrid1.DataSource = (new AccessTask()).BindNews().Tables(0).DefaultView;

解决方案 »

  1.   

    把DataGrid1.DataSource = DataSet2.Tables("0").defaultview
    里面的的()换成[]
    即:
    DataSet2.Tables["0"].defaultview
      

  2.   

    DataGrid1.DataSource = (new AccessTask()).BindNews().Tables[0];
    即可
      

  3.   

    如果没有DataGrid能不能直接使用DataBinder.Eval(Container.DataItem,"Id")???
      

  4.   

    在C#中数组是用[]表示的而Tables[0]代表的就是一个数组元素,所以用[]而不是();
      

  5.   

    DataGrid1.DataSource = (new AccessTask()).BindNews().Tables(0).DefaultView;
    而Tables[0]代表的就是一个数组元素,所以用[]而不是();