2016-05-26 15 views
0

Ich versuche, diesen Code ausführenbinden Daten auf Dropdownlist

private void LoadProdName() 
    { 
     con.Open(); 
     cmd = new SqlCommand(@"SELECT productName 
          FROM Products3 
          WHERE productType = @Type",con); 

     cmd.Parameters.AddWithValue("@Type",ddlProducts.SelectedItem.Value.ToString()); 

     da = new SqlDataAdapter(cmd); 
     dt = new DataTable(); 
     da.Fill(dt); 
     ddlProdName.DataSource = dt; 
     ddlProdName.DataBind(); 
     con.Close(); 
    } 

meine selectedIndesChange Codes:

protected void ddlProducts_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     LoadProdName(); 
    } 

, die den Wert meiner ersten dropdownlist.My Problem verwendet wird, wenn ich einen Product auf wählen Meine Dropdown-Liste wird meine zweite DDL mit der Select-Abfrage füllen, aber ich bekomme überhaupt keine Daten von meiner zweiten Dropdown-Liste.

Jetzt bekomme ich ein paar Fortschritte. Diese ist das, was ich jetzt: enter image description here

+0

und was ist das Problem? – NoSaidTheCompiler

+1

und woher kommt genau das? – dinotom

+0

@dinotom 'SqlConnection con = new SqlConnection (@ "Data Source = localhost \ SQLEXPRESS; Initial Catalog = MejOnlineManagementDB00; Integrated Security = True;");' –

Antwort

0

Für Kaskade drowdownlist Sie ein Postback in Ihrem Dropdownlist-Event „OnSelectedIndexChanged“ tun müssen, oder einen AJAX-Aufruf zu Ihrer Methode verwenden

diese Anleitung versuchen: http://www.aspsnippets.com/Articles/Creating-Cascading-DropDownLists-in-ASP.Net.aspx

versuchen, diesen Code nach Ihrer Anfrage

 ddlProdName.DataSource = cmd.ExecuteReader(); 

     ddlProdName.DataTextField = "productName"; 

     ddlProdName.DataValueField = "productName"; //or productId 

     ddlProdName.DataBind(); 
0

In Ihrem Fall sollten Sie tun:

ddlProdName.DataTextField = "productName"; //this is the name of column that's in your datatable. 
ddlProdName.DataValueField = "productName"; 

Wenn Sie etwas anderes als Sammlung von einfachen Datentyp als Datenquelle spezifiziert ist, müssen Sie die DisplayMember und ValueMember (in WinForms) und DataTextField und DataValueField (in Webformulare, von Sergio Antwort) angeben Eigentum der combobox, damit es weiß, welche Eigenschaft angezeigt werden soll und welche als Wert verwendet werden soll.

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
     DataTable dt = new DataTable(); 
     DataColumn prodName = new DataColumn("Products"); 
     dt.Columns.Add(prodName); 
     dt.Rows.Add("a"); 
     dt.Rows.Add("b"); 
     dt.Rows.Add("c"); 

     comboBox1.DataSource = dt; 

     comboBox1.DisplayMember = "Products"; 
     comboBox1.ValueMember = "Products"; 
    } 
} 

public class Person 
{ 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
} 
+0

Aktualisiert meine Frage.Ich denke, das ist für Windows Form? Nicht asp richtig? –

+0

Ich habe dieses Beispiel in WinForm gemacht, aber das Kombinationsfeld-Steuerelement sollte sich grundsätzlich gleich verhalten. Könntest du das letzte Stück von meiner Antwort versuchen und sehen, ob das hilft? – NoSaidTheCompiler

+0

@NoSaidCompliler Ich kann DisplayMember auf Asp nicht verwenden. –

Verwandte Themen