2

この質問が重複している可能性があることは知っていますが、たくさんの例を見ていますが、どれも私の状況に合っていません。

DataList内にDropDownListがあり、DropDownListにDBからのデータを入力する必要があります。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結果内の1つの値ではなく、クエリ自体に対して呼び出しを行う必要があるようです。

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

DataTextFieldそして、さらに重要なのは、とを指定する必要がないDataValueFieldことDataSourceですList<string>

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

pr_productタイプであると仮定するとstring、これは機能するはずです

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

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

私の仮定に従うと、 databindでフィールド名を指定する必要ddqueryIEnumerable<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

他の方法..

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
<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 に答える