2013-08-15 6 views
1

저는 신선한 ASP.NET입니다. 제 작업에서 문제를 만났습니다. 제발 도와주세요.javascript를 사용하여 코드에서 생성 된 컨트롤을 변경할 때 오류가 발생합니까?

ASP 페이지의 드롭 다운 목록에 옵션을 동적으로 추가하려고합니다. 내가 오류를 얻을 것이다

protected void Page_Load(object sender, EventArgs e) 
    { 
     Table t = new Table(); 
     form1.Controls.Add(t); 
     TableRow r = new TableRow(); 
     formatTable.Rows.Add(r); 
     TableCell c = new TableCell(); 
     formatRow.Cells.Add(c); 

     DropDownList select = new DropDownList(); 
     select.ID = "mySelect"; 
     select.Text = "mySelect:"; 
     c.Controls.Add(select); 
    } 

: 나는 ASP의 코드 숨김에서 드롭 다운리스트 웹 컨트롤을 추가해야 몇 가지 이유를 들어

<body> 
    <form id="form1" runat="server" style="height:100%"> 
    </form> 
    <script type="text/javascript"> 
     function addOptionToSelect(optKey, optValue) { 
      var select = document.getElementById('<%=mySelect.ClientID%>'); 
       var opt = new Option(thisLabel, thisValue); 
       select.add(opt); 
      } 
     } 
    </script> 
</body> 

: 그래서 나는 자바 스크립트 함수를 작성

컴파일러 오류 메시지 : CS0103 : 'mySelect'이름이 현재 컨텍스트에 없습니다.

그러나 ASP 페이지에 드롭 다운 목록을 직접 추가하면 오류가 없습니다.

<form id="form1" runat="server" style="height:100%"> 
    <div> 
     <asp:DropDownList ID="a_content_type" runat="server"> 
     </asp:DropDownList> 
    </div> 
</form> 

오류를 어떻게 해결해야합니까? 그리고 "ASP 페이지에서 asp 웹 컨트롤 추가"와 "코드 숨김으로 asp 웹 컨트롤 추가"의 차이점은 무엇입니까?

+0

테이블과 관련하여 html을 사용하여 테이블을 만들고 데이터를 표시하는 데 사용하는 경우 리피터 컨트롤을 데이터 바인딩하는 것이 어떻습니까? 선택에 관해서는 왜 데이터 바인딩뿐만 아니라, 드롭 다운에 항목을 추가하는 HTML 코드에서 asp : ListItem을 사용하는 것이 좋을까요? 나중에 목록을 새로 고치기 위해 아약스를 사용하지 않는 한 페이지로드에 항목을 동적으로 추가 할 필요가 없습니다. 또한 오류가 발생하는 이유는 코드 숨김에서 "mySelect"가 나타날 때 드롭 다운 목록의 ID가 "a_content_type"이기 때문입니다. –

답변

0

문제를 해결할 다른 방법이 있다고 생각합니다. 첫째,이 ASP 헤더에 새로운 기능을 추가

function setClientID(id) { this.clientID = id; } 

을 그리고, 코드 숨김하기 위해 드롭 다운리스트를 만든 후 아래의 코드를 추가

마지막으로
Page.ClientScript.RegisterStartupScript(this.GetType(), "setClientID", "setClientID('" + mySelect.ClientID + "');", true); 

, 사용자 "this.ClientID는"교체 "< % = mySelect.ClientID %>"를 선택하십시오. 작동합니다.

+0

새 clientID 속성을 만들고 설정 한 다음 자바 스크립트 전역'window' 개체의? 내 업데이트를 참조하십시오. – Igor