2017-12-31 17 views
0

ddl에서 하나의 값을 선택하고 페이지에 제품을 표시하지 않습니다. 선택한 값은 바인드 된 상태로 유지되지만 페이지는 비어 있습니다.C# 드롭 다운 목록 Not 트리거 인덱스 변경

또한 if (! ispostback)를 사용하지 않고 getCat() 함수를 호출하면됩니다. 페이지를로드 할 때 드롭 다운 목록은 첫 번째 값에 고정되지만 페이지에 제품을 표시합니다.

드롭 다운 목록 :이 구현

<asp:dropdownlist runat="server" id="ddcateg" AutoPostBack="true" onselectedindexchanged="Ddcateg_SelectedIndexChanged"></asp:dropdownlist> 

:

protected void Page_Load(object sender, EventArgs e) 
{ 
    //afisare(); 

    if (!IsPostBack) 
    { 
     getCateg(); 
    } 

} 


public void getCateg() 
{ 

    ProdusTipModel model = new ProdusTipModel(); 
    FarmacieEntities db = new FarmacieEntities(); 

    var lizt = (from c in db.ProdusTips select c).ToList(); 


     ddcateg.DataSource = lizt; 
     ddcateg.DataValueField = "ID"; 
     ddcateg.DataTextField = "Name"; 


    ddcateg.DataBind(); 
    ddcateg.SelectedIndexChanged += Ddcateg_SelectedIndexChanged; 
} 


public void afisare2(List<Produ> z) 
{ 
    ProdusModel mdl = new ProdusModel(); 

     foreach (var produs in z) 
     { 
      Panel produsePnl = new Panel(); 
      ImageButton imageButton = new ImageButton(); 
      produsePnl.BorderColor = Color.AliceBlue; 

      Label lblNume = new Label(); 
      Label lblPret = new Label(); 

      produsePnl.BorderStyle = BorderStyle.Groove; 
      produsePnl.BorderColor = Color.LightSkyBlue; 

      imageButton.ImageUrl = "~/Img/Produse/" + produs.Image; 
      imageButton.CssClass = "imgProdus"; 
      imageButton.PostBackUrl = "~/Pages/PaginaProdus.aspx?id=" + produs.ID; 

      lblNume.Text = produs.Name; 
      lblNume.CssClass = "numeProd"; 

      lblPret.Text = produs.Price + "lei"; 
      lblPret.CssClass = "produsPret"; 


      produsePnl.Controls.Add(imageButton); 
      produsePnl.Controls.Add(new Literal { Text = "<br /" }); 
      produsePnl.Controls.Add(lblNume); 
      produsePnl.Controls.Add(new Literal { Text = "<br /" }); 
      produsePnl.Controls.Add(lblPret); 

      pnlProduse.Controls.Add(produsePnl); 

     } 

} 



private void Ddcateg_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    DropDownList selectedList = (DropDownList)sender; 
    int selectedLit = Convert.ToInt32(selectedList.SelectedValue); 

    ProdusModel mdl = new ProdusModel(); 
    List<Produ> list = mdl.GetProdCateg(selectedLit).ToList(); 

    afisare2(list); 

} 
+0

당신은 이벤트 이름의 철자를 틀었습니다 : onselectedindexchange가 아니라 교환 코드 – dlatikay

+0

이 내 코드에 올바르게 쓰여졌습니다. ( –

+0

항상 실제 사용하고있는 코드를 게시하십시오. 예를 들어 사람들이 문제를 재현 할 수 있습니다. – dlatikay

답변

1

귀하의 문제는 방법 뒤에 코드가 개인이라고 할 수있다 :

private void Ddcateg_SelectedIndexChanged(object sender, EventArgs e) 

가 보호하고 시도 또는 공개 그래서 그것은 aspx 페이지에서 볼 수 있습니다.

+0

자동으로 생성되었습니다. 문제가 있습니다. 감사합니다. –

+1

aspx에서 볼 수없는 경우 메서드를 찾을 수 없으면 예외가 발생합니다. –

+0

Visual Studio를 사용합니다. 때로는 오류 필드가 나에게 모든 오류를 표시하지 않습니다. 나는 그것을 표시하기 위해 2-3 번 컴 플라이해야합니다 .Akward, 나만 일어납니다. 답변을 다시 한번 감사드립니다 :) –

관련 문제