将通用列表绑定到ASP.NET DropDownList

3

我正在尝试将泛型列表绑定到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;
    }

那么,你的问题到底是什么? - Ahmed Magdy
3个回答

4

修复它!我必须添加这个:

public class Paths
    {
        public string orignalPathName { get; set; }
        public int orignalPathId { get; set; }
        public string newPathName { get; set; }
    }

1
所以它应该是一个属性,才能在绑定中使用!谢谢。 - Ahmed Magdy

0
你的问题可能是绑定方面的,如果没有回发,你可能只会绑定!
If(!Page.IsPostBack)
{
    List<Paths> paths = new List<Paths>();
    paths = GetOriginalPaths();
    DropDownList1.DataSource = paths;
    DropDownList1.DataTextField = "orignalPathName";
    DropDownList1.DataValueField = "orignalPathId";
    DropDownList1.DataBind();
}

0
你遇到了什么问题?
顺便说一下,DataValueField 应该是唯一的。如果不是,它可能会在绑定或回传时引起问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接