2013-10-08 7 views
0

J'ai besoin de créer une objectdatasource à partir d'une datatable. J'ai actuellement une méthode, qui génère un datatble:Convertir datatable en objectdatasource

static DataTable GetTableForDropDown() 
    { 

     DataTable dt = new DataTable(); 
     DataRow dr = null; 
     dt.Columns.Add(new DataColumn("DurationType", typeof(string))); 

     dr = dt.NewRow(); 
     dr["DurationType"] = "Hours"; 
     dt.Rows.Add(dr); 

     dr = dt.NewRow(); 
     dr["DurationType"] = "Days"; 
     dt.Rows.Add(dr); 

     dr = dt.NewRow(); 
     dr["DurationType"] = "Weeks"; 
     dt.Rows.Add(dr); 

     dr = dt.NewRow(); 
     dr["DurationType"] = "Months"; 
     dt.Rows.Add(dr); 
     return dt; 
    } 

Et je dois créer et ObjectDataSource et le charger en elle. J'ai trouvé très peu de documentation ou sur la façon de le faire. J'ai trouvé le code suivant pour essayer de le convertir, mais il me renvoie une erreur quand je l'essaie.

var edgeDataSource = new ObjectDataSource(
      "MyNamespace.MyClass, MyNamespace.MyClasss, Version=1.0.0.0, Culture=neutral, PublicKeyToken=ce8ab85a8f42a5e8", 
      "GetTableForDropDown") {ID = "EdgeDataSource"}; 

Répondre

1

Ce que vous pouvez essayer est (je l'ai mis dans un seul fichier pour simplifier les choses)

namespace MyNamespace 
{ 
    public class MyClassData 
    { 
     public string DurationType { get; set; } 
    } 

    public class MyClass 
    { 
     public List<MyClassData> GetTableForDropDown() 
     { 
      List<MyClassData> myList = new List<MyClassData>(); 
      myList.Add(new MyClassData { DurationType = "Hours" }); 
      myList.Add(new MyClassData { DurationType = "Days" }); 
      myList.Add(new MyClassData { DurationType = "Weeks" }); 
      myList.Add(new MyClassData { DurationType = "Month" }); 
      return myList; 
     } 
    } 

    public partial class WebForm18 : System.Web.UI.Page 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 
      var edgeDataSource = new ObjectDataSource("MyNamespace.MyClass", "GetTableForDropDown"); 
      var x = edgeDataSource.Select(); 
     } 
    } 
}