Привязать общий список к ASP.NET DropDownList - PullRequest
3 голосов
/ 22 февраля 2011

Я пытаюсь привязать общий список к DropDownList, и я не уверен, как продолжить.

вот мой код:

   protected void Page_Load(object sender, EventArgs e)
    {
        List<Paths> paths = new List<Paths>();
        paths = GetOriginalPaths();
        DropDownList1.DataSource = paths;
        DropDownList1.DataTextField = "orignalPathName";
        DropDownList1.DataValueField = "orignalPathId";
        DropDownList1.DataBind();
    }


    public class Paths
        {
            public string orignalPathName;
            public int orignalPathId;
            public string newPathName;
        }
        public static List<Paths> GetOriginalPaths()
        {
            return PrepareOriginalPathsData();
        }
        public static List<Paths> PrepareOriginalPathsData()
        {
            List<Paths> objPaths = new List<Paths> { 
                new Paths{orignalPathName = "comp1", orignalPathId= 1} ,
                new Paths{orignalPathName = "comp1", orignalPathId= 1} ,
                new Paths{orignalPathName = "comp1", orignalPathId= 1} ,
                 new Paths{orignalPathName = "comp2", orignalPathId= 2} ,
                new Paths{orignalPathName = "comp3", orignalPathId= 3} ,
                new Paths{orignalPathName = "comp4", orignalPathId= 4}
          };
            return objPaths;
        }
        public static List<Paths> GetNewPaths(int orignalPathId)
    {
        List<Paths> lstNewPaths = new List<Paths>();
        Paths objnewPaths = null;
        var newPath = (from np in PrepareNewPathsData() where np.orignalPathId == orignalPathId select new { newpathname = np.newPathName, orgId = np.orignalPathId });
        foreach (var np in newPath)
          {
              objnewPaths = new Paths();
              objnewPaths.orignalPathId = np.orgId;
              objnewPaths.newPathName = np.newpathname;
              lstNewPaths.Add(objnewPaths);
          }
          return lstNewPaths;
    }
        public static List<Paths> PrepareNewPathsData()
    {
        List<Paths> objNewPaths = new List<Paths> { 
                new Paths{newPathName = "part1", orignalPathId= 1} ,
                new Paths{newPathName = "part1", orignalPathId= 1} ,
                new Paths{newPathName = "part1", orignalPathId= 1} ,
                new Paths{newPathName = "part3", orignalPathId= 2} ,
                new Paths{newPathName = "part4", orignalPathId= 3} ,
                new Paths{newPathName = "part5", orignalPathId= 4} ,

          };
        return objNewPaths;
    }

Ответы [ 3 ]

4 голосов
/ 22 февраля 2011

Исправь это!Я должен был добавить это:

public class Paths
    {
        public string orignalPathName { get; set; }
        public int orignalPathId { get; set; }
        public string newPathName { get; set; }
    }
0 голосов
/ 22 февраля 2011

С какой именно проблемой вы сталкиваетесь?

Кстати, DataValueField должен быть уникальным. Как бы то ни было, это может вызвать проблему либо с привязкой, либо с обратной версией.

0 голосов
/ 22 февраля 2011

Ваша проблема может быть связана с предполагаемой связью, которую вы можете связать, только если не отправлять обратно !!

If(!Page.IsPostBack)
{
    List<Paths> paths = new List<Paths>();
    paths = GetOriginalPaths();
    DropDownList1.DataSource = paths;
    DropDownList1.DataTextField = "orignalPathName";
    DropDownList1.DataValueField = "orignalPathId";
    DropDownList1.DataBind();
}
...