【问题标题】:linq to dropdown list in asp.net [duplicate]linq到asp.net中的下拉列表[重复]
【发布时间】:2014-02-26 12:26:26
【问题描述】:

谁能帮帮我

我在从我的 sql linq 查询中绑定我的下拉列表时遇到问题,似乎存在匿名类型不是静态类型的问题,然后列表没有被填充

请帮忙谢谢

public static void getlocation()
{
    DataClasses_AbintegroDataContext dc = new DataClasses_AbintegroDataContext("name = name");


    //List<Location> thelocations = new List<Location>(); 

    var locations = new[] { from a in dc.Locations select new { a.name } };


    DropDownList ddLocation = new DropDownList();

    ddLocation.DataSource = locations;
    ddLocation.DataTextField = "Location";
    ddLocation.DataValueField = "Location";


}

【问题讨论】:

标签: asp.net .net linq web


【解决方案1】:

试试看:

public static void getlocation()
{
    DataClasses_AbintegroDataContext dc = new DataClasses_AbintegroDataContext("name = name");
    var locations =  from a in dc.Locations;
    DropDownList ddLocation = new DropDownList();

    ddLocation.DataSource = locations.ToList();
    ddLocation.DataTextField = "name";
    ddLocation.DataValueField = "Id";
    ddLocation.DataBind();
}

希望对你有帮助。

【讨论】:

  • 谢谢,但是我现在得到“无法将方法组 'ToArray' 转换为非委托类型 'object'。你打算调用一个方法吗?上帝,我今天做了噩梦,谢谢你帮助
【解决方案2】:

试试这个,你错过了ddLocation.DataBind(); 并且没有将此动态DDL 添加到任何控件中,需要进行一些更改

public static void getlocation()
{
    DataClasses_AbintegroDataContext dc = new DataClasses_AbintegroDataContext("name = name");
    List<Location> locations =  (from a in dc.Locations).ToList();
    DropDownList ddLocation = new DropDownList();    
    ddLocation.DataSource = locations;
    ddLocation.DataTextField = "name";
    ddLocation.DataValueField = "Id";
    ddLocation.DataBind();
    divRunServer.Controls.Add(ddLocation);

}

在客户端添加这个div标签

<div id="divRunServer" runat="server"></div>

【讨论】:

  • 谢谢,但是我现在得到“无法将方法组 'ToArray' 转换为非委托类型 'object'。你打算调用一个方法吗?上帝,我今天做了噩梦,谢谢你帮助
  • 我已经更新了我的答案。请立即查看
【解决方案3】:

另一种方式:

public static void getlocation()
{
    DataClasses_AbintegroDataContext dc = new DataClasses_AbintegroDataContext("name = name"); 
    var locations = from a in dc.Locations select new {a1 = a.Id, a2 = a.name };
    DropDownList ddLocation = new DropDownList();
    ddLocation.DataSource = locations;
    ddLocation.DataValueField = "a1";
    ddLocation.DataTextField = "a2";
}

【讨论】:

    【解决方案4】:

    匿名类型应该可以正常工作,您只需为DataTextFieldDataValueField 提供不在您的匿名类型中的属性名称。试试:

                                                        V-- give the property a name
    var locations = from a in dc.Locations select new { Location = a.name };
    
    DropDownList ddLocation = new DropDownList();
    
    ddLocation.DataSource = locations;
    ddLocation.DataTextField = "Location";
    ddLocation.DataValueField = "Location";
    

    但是我注意到您没有对您创建的DropDownList 进行任何操作 - 您可能无意中隐藏了一个名为 ddLocation 的页面控件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-22
      • 1970-01-01
      • 1970-01-01
      • 2017-09-17
      相关资源
      最近更新 更多