2

我知道这个问题可能是重复的,但我看了很多例子,但没有一个适合我的情况。

我在 DataList 中有一个 DropDownList,我需要用数据库中的数据填充 DropDownList。我知道如何在 DataList 中找到下拉控件,并且知道如何使用 SqlCommand 填充下拉列表。现在我正在尝试学习 LINQ,但我无法填写下拉列表。请看下面我的场景:

        //Scenario 1
        var ddquery = from dd in db.PRODUCTs select dd.pr_product.Distinct();

        product.DataSource = ddquery;                
        product.DataTextField = "pr_product";
        product.DataValueField = "pr_product";
        product.DataBind();

在场景 1 中,我收到错误:“'System.String' 类型不支持序列运算符。”

        //Scenario 2
        var ddproc = from dd in db.isp_GETDDL("PRODUCTS", "", "") select dd;

        product.DataSource = ddproc;
        product.DataTextField = "pr_product";
        product.DataValueField = "pr_product";
        product.DataBind();

在场景 2 中,我收到错误:“DataBinding:'isp_GETDDLResult' 不包含名为 'pr_product' 的属性。” 在这种情况下,我并不是真的做对了,因为 PROC 返回一组数据,但我不确定我是否正确处理。

        //Scenario 3
        var ddq = from dd in db.PRODUCTs select dd;

        product.DataSource = ddq;
        product.DataTextField = "pr_product";
        product.DataValueField = "pr_product";
        product.DataBind();

在场景 3 中,我得到与 2 中相同的错误,但在这个错误中,我没有使用 PROC 来获取数据。

任何帮助将不胜感激。

4

5 回答 5

5

看起来您的Distinct呼叫应该在查询本身上,而不是在结果中的一个值上:

var ddquery = (from dd in db.PRODUCTs select dd.pr_product).Distinct().ToList();

更重要的是,您不必指定DataTextFieldand DataValueField,因为您的DataSourceis List<string>

product.DataSource = ddquery;                
product.DataBind();
于 2013-03-16T21:51:28.287 回答
0

另一种方式..

1.var query=(from p in ContexName.TableName
2.          select new{
3.                 p.fieldName

4.          }).toArray();
5.for(int i=0;i<query.count();i++)
6.        dropdownlist.items.add(query[i].FieldName.toString());
于 2013-09-21T10:29:36.893 回答
0

假设pr_product是类型string这应该工作

    //Scenario 1
    var ddquery = from dd in db.PRODUCTs select dd.pr_product.Distinct();

    product.DataSource = ddquery;                
    product.DataBind();

按照我的假设,ddquery将是IEnumerable<string>这样您不必在数据绑定上指定字段名称,而且这种情况实际上是错误的。

于 2013-03-16T21:50:19.880 回答
0

(替代方案,使用匿名类型)

product.Datasource = ddquery.Select(d => new 
{
pr_product = d.something
});
于 2013-03-16T21:52:52.527 回答
0
<asp:DropDownList ID="ddlCategorie" runat="server">                         
</asp:DropDownList>   

在文件后面的代码中:

ddlCategorie.DataSource = context.Categories.ToList();
ddlCategorie.DataTextField = "Nom";
ddlCategorie.DataValueField = "CategorieId";
ddlCategorie.DataBind();
ddlCategorie.Items.Insert(0, new ListItem("-Séléctionner une catégorie-"));         
于 2019-09-02T18:07:38.953 回答