해결 방법을 찾을 수없는 문제가 있습니다. 상위 페이지에서 동적으로 기본 사용자 컨트롤 (부모 페이지에서 선택한 항목 콤보 X를 기반으로 한 6 개의 다른 UC)을 호출하는 부모 페이지가 있습니다. UC 내에서 콤보 상자를 기반으로 UC 내에서 가시성을 제어하는 javascript를 삽입 (registerClientscript)합니다. 모든 UC는 동일한 콤보를 가지고 있지만이 UC 내의 컨트롤은 다를 수 있습니다.C# : ClientScripts를 다시 등록하는 방법?
내가 처음으로로드 할 때 발생하는 문제는 JS가 올바르게 생성되었지만 부모로부터 콤보 X가 변경되면 UC의 부분 새로 고침이 트리거되어 다시 새로 등록됩니다. JS. 당신이 볼 수 있듯이
function DefineView(sender, eventArgs) {
var comboSearch = $find('%%cmbSearchType%%');
//cmbSearch Section
switch (comboSearch.get_selectedItem().get_value()) {
[[MY CODE HERE]
}
}
ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "SearchVisibilityPPSA",jsFunction.Replace("%%cmbSearchType%%", cmbSearchType.ClientID),true);
, 나는 된 ClientID를 교체하고 페이지의 첫 번째로드에,이 ctl00_PrincipalPlaceHolder_ctl00_cmbSearchType처럼 제대로 해결하지만 콤보 X를 변경할 때, 그것은 다시 스크립트를 다시로드하는 사용자 정의 컨트롤을 다시로드 위. 렌더링 된 HTML에서, 콤보 ID는 내 디버그에서 (CT01에 ct00에서 이름에 미묘한 변화를 주) ctl00_PrincipalPlaceHolder_ctl01_cmbSearchType로 이름이 변경되고,이 된 ClientID가 새로운 ID를 포함하지만, 어떻게 든이 렌더링 된 HTML에 regenrated 대체되지 않습니다 보았다.
내 질문이 UC가 호출 될 때마다 다시 렌더링 할 내가 JS를 강제로 어떻게 것 같아요? 어떤 이유로, 항상 ID를 강제로 ...이는 내가 어떤 ID를 assigining하지 않고 생성 된 내 동적 제어에 관한 생각