【问题标题】:How to extract extra data from LinqDataSource?如何从 LinqDataSource 中提取额外数据?
【发布时间】:2009-07-28 21:59:41
【问题描述】:

我在 LinqDataSource 中有一个简单的向导生成查询,如下所示:

<asp:LinqDataSource ID="EvaluationsData" runat="server" ContextTypeName="Bonus.Models.BonusDataContext"
    Select="new (Id, Name, Coverage)" TableName="BM_Evaluations" 
</asp:LinqDataSource>

我将此数据源分配给 DropDownList,分别使用 Id 和 Name 作为 DataValueField 和 DataTextField。但是当我选择一个选项时,我也想保留 Coverage,从数据源中提取它并存储在 HiddenField 中。这是一种无需对数据库进行其他查询的方法吗?

谢谢。

【问题讨论】:

    标签: asp.net linq linq-to-sql


    【解决方案1】:

    为此,您需要从数据源中截取返回的项目列表,然后手动将 Coverage 分配给下拉项目中的项目。

    这是你的标记

    <asp:LinqDataSource ID="EvaluationsData" runat="server"
        ContextTypeName="Bonus.Models.BonusDataContext"
        Select="new (Id, Name, Coverage)" TableName="BM_Evaluations"
        onselected="EvaluationsData_Selected">
    </asp:LinqDataSource>
    <asp:DropDownList ID="DropDownList1" runat="server" 
        DataSourceID="EvaluationsData" DataValueField="Id" DataTextField="Name"
        ondatabound="DropDownList1_DataBound">
    </asp:DropDownList>
    

    这是你的代码

    List<object> evaluations;
    protected void EvaluationsData_Selected(object sender, LinqDataSourceStatusEventArgs e)
    {
        evaluations = new List<object>(e.Result as IEnumerable<object>);
    }
    protected void DropDownList1_DataBound(object sender, EventArgs e)
    {
        foreach (ListItem item in DropDownList1.Items)
        {
            var eval = evaluations.Where(a => a.Id == item.Value).FirstOrDefault();
            if (eval != null)
            {
                item.Attributes.Add("Coverage", eval.Coverage);
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2015-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多