2010-03-05 5 views
0

Dev Express 구성 요소, 즉 AspxComboBox에 문제가 있습니다.DevExpress ASPXComboBox의 동적 컨트롤에 자바 스크립트 문제가 있습니다.

내 컨텍스트는 다음과 같습니다. 일부 비즈니스 엔티티의 인터페이스를 동적으로 생성하고 싶습니다. 일부 메타 데이터를 수신하는 사용자 정의 컨트롤을 설계했으며 해당 메타 데이터를 기반으로 컨트롤은 텍스트 상자, 날짜 편집기 및 콤보 상자를 인터페이스에 추가합니다. 이러한 모든 컨트롤은 비 동적 방식으로 페이지에 추가 될 때 매력처럼 작동합니다.

document.getElementById("usercontrol_combo_I").setAttribute("autocomplete", "off"); 

는 "UserControl을"나는 디자인하고있어 사용자 컨트롤의 ID이다 : 나는 C# 코드에서 추가 할 때 그러나, 다음과 같은 자바 스크립트 라인에 오류가 있습니다. "콤보"는 콤보의 ID입니다.

ID가 "usercontrol_combo_I"인 요소가 HTML DOM에서 발견되지 않습니다.

DataBind를 콤보 자체 (AspxComboBox 인스턴스의 DataBind() 메서드 호출에 대한 주석 처리)에 사용하지 않기로 선택하면 오류가있는 JS 줄이 렌더링되지 않습니다. 최종 HTML에 있음). 그러나, 만약 내가 그런 식으로 남겨두면, 후속 포스트 백이 콤보 목록을 비 웁니다 (콤보에 더 이상 항목이 없습니다). 콤보의 데이터 소스는 PostPage == true 인 경우에도 모든 페이지로드시 할당되는 IList 인스턴스입니다.

동일한 문제를보고하는 DevExpress's support forum에 게시물이 있지만 팀의 답변이 없습니다.

아무도 여기에이 문제가 있었고 해결 방법을 찾았습니까?

답변

0

사실, 나는 방금 간단한 해결 방법을 찾았습니다. 페이지 자체의 page_load 이벤트에서 생성 된 컨트롤에서 DataBind()를 호출하면 문제가 사라집니다. 예를 들어

:

"제어"콤보 상자를 포함하는 UserControl을이다
protected void Page_Load(object sender, EventArgs e) 
    { 
     base.Page_Load(); 
     this.control.DataBind(); 
    } 

. 이상한 점은 PostBack 및 CallBack에서도 DataBind를 호출한다는 것입니다.

하지만, 작동합니다.

Devexpress를 사용할 때 내가 놓친 두 가지 더 많은 것들이 있다고 가정합니다. 그러나 "연습이 완벽합니다!"

답장을 보내 주셔서 감사합니다.

0

ASP.NET Dev를 사용하면 Page_Load 이벤트에 바인딩하는 경우 모든 요청을 서버에 다시 바인딩해야하며 콜백도 포함됩니다.

이제 HTML 요소를 받고 속성을 설정하는 것은 지원되지 않습니다. autoComplete를 해제하는 유일한 지원 방법은 서버에 콜백을 보내고 서버 측 속성에서 autoComplete를 해제하여 컨트롤을 업데이트하는 것입니다. 이제 comboBox는 콜백을 수행하거나 CallbackPanel에서 상자를 감쌀 수 있어야합니다.

ASPxComboBox의 ClientInstanceName도 설정하고 있습니까?

관련 문제