【问题标题】:LINQ to XML binding to asp.Net DropDownListLINQ to XML 绑定到 asp.Net DropDownList
【发布时间】:2014-01-31 22:05:33
【问题描述】:

我正在尝试使用 LINQ,因此我可以将其绑定到 ASP.NET 下拉列表。

到目前为止;这就是我的 LINQ 表达式;我是 LINQ 的新手,我今天早上开始学习它。

 county.DataSource = (from taxUnit in TaxUnits.Descendants("CodeData")
    join taxType in TaxTypes.Descendants("CodeData")
      on
      taxUnit.Attribute("taxuntype").Value
      equals
      taxType.Attribute("codeid").Value
    where taxType.Attribute("taxuntypky").Value == "CO"
    select new
    {
      County = taxUnit.Attribute("desc"),
      CodeID = taxUnit.Attribute("codeid")
    });

  county.DataTextField = "desc";
  county.DataValueField = "codeid";

  county.DataBind();

最初我试图将其转换为数据表;我被告知您实际上可以直接将 LINQ 绑定到 DropDownList。

          <asp:Label AssociatedControlID="county" runat="server">County</asp:Label>
          <asp:DropDownList
            ID="county"
            runat="server" />

到目前为止,结果是……当我查看下拉框时。根据我从 LINQPad 获得的信息,我期望

County CodeID 
Willow County 1 
CP2 TU 2

当前答案的唯一问题是我不知道它是如何工作的,因此我不明白如何将其转换为我想要的。

我之前能够使用指向此方法的 ObjectDataSource,并为 List 制作了一个模拟,只是为了玩数据绑定。

【问题讨论】:

  • 你知道不用中间DataSet就可以直接绑定LINQ结果吗?
  • ...不。当我回到我的电脑前,我必须查一下。
  • LINQ 结果类应该具有您绑定的属性。并实现 ILIst,即调用 ToArray()ToList(). 但我可能在最后一句话中错了。

标签: c# asp.net linq


【解决方案1】:

如果实际的问题是 - 如何将 LINQ to XML 结果绑定到 DropDownList 上,那么这是我的旧 ASP.NET 项目中的代码。我将 LINQ 绑定到实体结果到 GridView。对于 DropDownList 应该以同样的方式工作:

public IEnumerable<IDraft> Get(int accountId, DateTime startDate, DateTime endDate)
{
    using (var db = new ModelContainer())
    {
        var account = db.Accounts.SingleOrDefault(a => a.ID == accountId);
        return (from d in account.Drafts
                let date = d.Date.Date
                where startDate.Date <= date && date <= endDate.Date
                orderby d.Date ascending
                select d).ToArray();
    }
}

protected void gridView_OnDataBinding(object sender, EventArgs e)
{
    ((IDataBoundControl)sender).DataSource = IoC.Resolve<IOperationRepository>().GetShared(this.ObjectId.Value, ucChooseDate.StartDate, ucChooseDate.EndDate);
}

【讨论】:

  • 几个问题;什么是 IDraft,你在使用 MVC,为什么你的方法比这个方法好? stackoverflow.com/questions/554649/…
  • @xphill64x:IDraft 是一个强类型实体。您可以使用强类型和松散类型的匿名类。
  • 不,这是“经典”的 ASP.NET 又名 Web 窗体。
  • 我假设这是在您的代码隐藏中;介意在 asp.net 中分享您的 GridView 吗?由于我对 asp 的了解有限,我肯定遗漏了一些东西。
  • 正确,使用 LINQ 将 GridView 从 SQL Server 绑定到实体/实体框架的代码隐藏。最初这是使用 SqlConnection/SqlCommand 编写的,但后来重新设计为使用 ORM。
猜你喜欢
  • 2012-04-20
  • 2011-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多