2011-07-03 4 views
1

코드 숨김 기능을 사용하여 드롭 다운 목록을 동적으로 바인딩합니다. 사용자가 드롭 다운 목록을 변경하고 구매를 제출하면 selectedvalue는 항상 비어 있습니다.asp.net - 문제가 dropdownlist을 얻는 것

나는 ddl.SelectedItem.ToString();을 모두 시도했다. 및 ddl.SelectedValue.ToString(); 그러나 아무 것도 작동하지 않습니다. 또한 아래의 두 코드 숨김 함수에 대해서는 반환 값과 매개 변수가 필요한 함수 대신 void 메서드를 사용할 수 없습니다. 어쨌든 매개 변수없이 void 메서드를 사용합니까? 모든 조언을 부탁드립니다.

감사합니다.

<%# FormattedSize((string)Eval("Size")) %> 
<%# FormattedGetSize((string)Eval("Size")) %> 

인라인 :

<asp:DropDownList ID="DropDownList1" runat="server" OnDataBinding='<%# FormattedSize((string)Eval("Size")) %>'></asp:DropDownList> 

<a href='AddToCart.aspx?CategoryId=<%# Eval("CategoryId") %>&&ProductId=<%# Eval("ProductId") %>&&Size=<%# FormattedGetSize((string)Eval("Size")) %>' style="border: 0 none white;"> 

코드 뒤에 :

protected string FormattedSize(string size) 
    { 
     if (size.Contains("s")) 
     { 
      DropDownList ddl = (DropDownList)FormView_Product.Row.Cells[0].FindControl("DropDownList1"); 
      ddl.Items.Add("S"); 
     } 

    if (size.Contains("m")) 
    { 
     DropDownList ddl = (DropDownList)FormView_Product.Row.Cells[0].FindControl("DropDownList1"); 
     ddl.Items.Add("M"); 
    } 

    if (size.Contains("f")) 
    { 
     DropDownList ddl = (DropDownList)FormView_Product.Row.Cells[0].FindControl("DropDownList1"); 
     ddl.Items.Add("Freesize"); 
    } 
    return null; 
} 

protected string FormattedGetSize(String Size) 
{ 
    DropDownList ddl = (DropDownList)FormView_Product.Row.Cells[0].FindControl("DropDownList1"); 
    string selectedSize = ddl.SelectedItem.ToString(); 
    return selectedSize; 
} 

답변

1

"당신이 잘못하고있어".. 때문에 작동하지 않는 이유는 . <a href=..은 사용자 상호 작용에 따라 변경되지만 사용자가 페이지를받을 때 이미 생성 될 것으로 예상됩니다.

  1. 드롭 다운 선택에 다시 게시는 다음 링크를 바꿀 것이 ...
  2. 일부와 href을 변경할 수 있습니다 : 드롭 다운에 따라 변경 링크를 원한다면, 당신은 하나가해야 할 것 드롭 다운 선택시 이벤트를 첨부하여 자바 스크립트
+0

안녕하세요, ddl의 AutoPostBack을 true로 설정했지만 작동하지 않았습니다. 어떤 충고? – k80sg

+0

예. 드롭 다운리스트에 데이터를 할당하는 곳이라면,'if (! IsPostBack)'만해라. 그렇지 않으면 viewstate에있는 것이 무엇이든 덮어 쓰게된다. – ub1k

0

Page_Load 메소드에서 수행하는 작업은 무엇입니까? 현재 요청이 포스트 백인지 여부를 확인합니까 (IsPostBack 사용)? 그렇다면 IsPostBack을 확인하고 가져 오기 요청에 대해서만 DropDownList를 기본 데이터 소스에 바인딩하십시오.

관련 문제