ObjectDataSource objDs = new ObjectDataSource();
            objDs.ID = "objDs";
            objDs.SelectMethod = "GetItems";
            objDs.TypeName = this.GetType().FullName + "," + this.GetType().Assembly.FullName;
            Controls.Add(objDs);
            this.SPGridView1.DataSourceID = "objDs";
            this.SPGridView1.DataBind();        protected DataTable GetItems()
        {
            DataTable dtInfo = new DataTable();
            return dtInfo = GetNodeView(this.mTv.SelectedNode);
        }请高人指点~~~~~~objectdatasource“objDs”未能找到不带参数的非泛型方法“GetItems”是咋回事

解决方案 »

  1.   

    ObjectDataSource 里没有不带参数的GetItems方法
      

  2.   

    ???不太懂~~GetItems方法是存在的啊,怎么会找不到呢
      

  3.   

    你的这句代码好像有问题啊... this.GetType().FullName + "," + this.GetType().Assembly.FullName;
    只留前面应该就可以了objDs.TypeName = this.GetType().FullName ;
      

  4.   

    DataTable GetItems()
    在那里定义的
      

  5.   

    是否参数没赋值 
    GetNodeView方法是否正确
      

  6.   

    public DataTable GetItems()
    要public
      

  7.   

    还有个问题就是LZ ,你这样写的目的是什么?这样不就可以绑定数据了... this.SPGridView1.DataSource=GetItems().DefaultView;
     this.SPGridView1.DataBind();
      

  8.   


    using.....
    namespace SPgridview
    {
        public class Class1 : System.Web.UI.Page
        {
            protected Label locaLb;
            protected TreeView mTv;
            protected string mPath;
            protected SPGridView SPGridView1;
            protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                {
                    TreeBind();
                }
                SpgvBind();
            }
            public void SpgvBind()
            {
                .......
            }
            public void TreeBind()//页面加载 绑定treeview
            {
                ......  
            }
            public DataTable GetDT()//databale数据源
            {
                DataTable mDt = new DataTable();
                mDt.Columns.Add("Title");
                mDt.Columns.Add("Author", typeof(string));
                mDt.Columns.Add("Rating", typeof(string));
                mPath = SPContext.Current.Site.Url;
                using (SPSite mSite = new SPSite(mPath))
                {
                    using (SPWeb mWeb = mSite.RootWeb)
                    {
                        foreach (SPList spitem in mWeb.Lists)
                        {
                            SPFile mFile;
                            foreach (SPListItem item in spitem.Items)
                            {
                                try
                                {
                                    DataRow mDr = mDt.NewRow();
                                    mFile = item.File;
                                    mDr["Title"] = "IMAGES/" + mFile.IconUrl;
                                    mDr["Author"] = mFile.Name.ToString();
                                    mDr["Rating"] = mFile.Length.ToString() + " Kb";
                                    mDt.Rows.Add(mDr);
                                }
                                catch (Exception ex)
                                {                            }
                            }                    }
                    }
                }
                return mDt;
                Cache["mDt"] = mDt;
            }
            protected void mTv_SelectedNodeChanged(object sender, EventArgs e)//treeview单击节点事件
            {
                DataTable mTdt = new DataTable();
                mTdt.Columns.Add("Title");
                mTdt.Columns.Add("Author");
                mTdt.Columns.Add("Rating");
                DataRow mTdr = mTdt.NewRow();            ObjectDataSource objDs = new ObjectDataSource();
                objDs.ID = "objDs";
                objDs.SelectMethod = "GetItems";
                objDs.TypeName = this.GetType().FullName;
                Controls.Add(objDs);
                this.SPGridView1.DataSourceID = "objDs";
                this.SPGridView1.DataBind();

            }
            protected DataTable GetNodeView(TreeNode tnode)//获取treeview节点的详细信息
            {
                DataTable mDt = new DataTable();
                mDt.Columns.Add("Title");
                mDt.Columns.Add("Author", typeof(string));
                mDt.Columns.Add("Rating", typeof(string));
                mPath = SPContext.Current.Site.Url;
                if (tnode.Text == this.mTv.Nodes[0].Text)
                {
                    using (SPSite mSite = new SPSite(mPath))
                    {
                        using (SPWeb mWeb = mSite.RootWeb)
                        {
                            foreach (SPList item in mWeb.Lists)
                            {
                                SPFile mFile;
                                foreach (SPListItem childitem in item.Items)
                                {
                                    try
                                    {
                                        DataRow mDr = mDt.NewRow();
                                        mFile = childitem.File;
                                        if (mFile != null)
                                        {
                                            mDr["Title"] = "images/" + mFile.IconUrl;
                                        }
                                        mDr["Author"] = mFile.Name.ToString();
                                        mDr["Rating"] = mFile.Length.ToString() + " kb";
                                        mDt.Rows.Add(mDr);
                                    }
                                    catch (Exception ex)
                                    {                                }
                                }
                            }
                        }
                    }
                }
                else
                {
                    using (SPSite mSite = new SPSite(mPath))
                    {
                        using (SPWeb mWeb = mSite.RootWeb)
                        {
                            foreach (SPList listitem in mWeb.Lists)
                            {
                                if (tnode.Text == listitem.Title)
                                {
                                    SPFile mFile;
                                    foreach (SPListItem childitem in listitem.Items)
                                    {
                                        try
                                        {
                                            DataRow mDr = mDt.NewRow();
                                            mFile = childitem.File;
                                            if (mFile != null)
                                            {
                                                mDr["Title"] = "images/" + mFile.IconUrl;
                                            }
                                            mDr["Author"] = mFile.Name.ToString();
                                            mDr["Rating"] = mFile.Length.ToString() + " kb";
                                            mDt.Rows.Add(mDr);
                                        }
                                        catch (Exception ex)
                                        {                                    }
                                    }
                                }
                                else
                                {
                                    SPFile mFile;
                                    foreach (SPListItem childitem in listitem.Items)
                                    {
                                        try
                                        {
                                            if (tnode.Text == childitem.Title)
                                            {
                                                try
                                                {
                                                    DataRow mDr = mDt.NewRow();
                                                    mFile = childitem.File;
                                                    if (mFile != null)
                                                    {
                                                        mDr["Title"] = "images/" + mFile.IconUrl;
                                                    }
                                                    mDr["Author"] = mFile.Name.ToString();
                                                    mDr["Rating"] = mFile.Length.ToString() + " kb";
                                                    mDt.Rows.Add(mDr);
                                                }
                                                catch (Exception ex)
                                                {                                            }
                                            }
                                            else
                                            {                                        }
                                        }
                                        catch (Exception ex)
                                        {                                    }
                                    }
                                }
                            }
                        }
                    }
                }
                return mDt;
            }
            protected DataTable GetItems()
            {
                DataTable dtInfo = new DataTable();
                return dtInfo = GetNodeView(this.mTv.SelectedNode);
            }
        }
    }完整的代码~~~~
    还有一个问题:就是this.SPGridView1.DataSourceID = "objDs"换成this.SPGridView1.DataSource = 数据源;
    分页会有问题,但是不会出现题目中的问题~~~~高手请指教
      

  9.   

    这么写的确能解决这个问题,但是objectdatasource的自动分页变会出错~~~
      

  10.   

    public string GetItems()
    {
        ...
    }
      

  11.   

    Lz 怎么不把数据层单独放到一个类库里ObjectDataSource 是通过反射类来调用方法.Lz你把数据层放页面 然后反射自己调用 这种方法我没用...还有你的ObjectDataSource 控件为什么不在页面上拖个上去然后 使用页面的智能标记来配置这样不容易出错啊!
      

  12.   

    GetItems 一定要Public!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
      

  13.   

    objDs.TypeName
    这个TypeName的设置是一个类名!!!
    楼主设置的什么??看不出!!调用GetItems()方法,一定是在某个类下的,也就是说:
    ObjectDataSource的TypeName设置类名;
    ObjectDataSource的SelectMethod设置该类下的方法名!!
      

  14.   

    这个问题呵呵 

     protected DataTable GetItems()
            {
                DataTable dtInfo = new DataTable();
                return dtInfo = GetNodeView(this.mTv.SelectedNode);
            }
    改成
    public DataTable GetItems()
            {
                DataTable dtInfo = new DataTable();
                return dtInfo = GetNodeView(this.mTv.SelectedNode);
            }
    就可以了。