동적으로 추가 CalendarExtender 을 Textbox 클래스 서버로 통제하십니까?
-
01-07-2019 - |
문제
하는 서버를 만들어 에서 상속되는 텍스트 상자에는 것이 자동으로 CalendarExtender 가 연결되어 있습니다.그것은 이렇게 할 수 있는가,내 새로운 제어야에서 상속 CompositeControl 까요?도했 전지만,나는 명확하지 않는 부품의 수명 주기 제어야 만들의 새 인스턴스 CalendarExtender,그리고 무엇을 제어 컬렉션을 추가해야합니다.나는 것 같다하지 않 추가 할 수 있는 페이지 또는 형태의 제어 컬렉션을 추가하면서(텍스트)제의 컬렉션은,나의 아무도는 팝업 달력 기능이 있습니다.
해결책
내가 이것을 달성에 프로젝트입니다.할 만들었 CompositeControl 모두 포함된 텍스트 및 CalendarExtender.
에 CreateChildControls
의 방법 CompositeControl 내가 사용하는 이와 유사한 코드:
TextBox textbox = new TextBox();
textbox.ID = this.ID + "Textbox";
textbox.Text = this.EditableField.TextValue;
textbox.TextChanged += new EventHandler(HandleTextboxTextChanged);
textbox.Width = new Unit(100, UnitType.Pixel);
CalendarExtender calExender = new CalendarExtender();
calExender.PopupButtonID = "Image1";
calExender.TargetControlID = textbox.ID;
this.Controls.Add(textbox);
this.Controls.Add(calExender);
물론 있는지 확인하는 형태로 포함하는 이 CompositeControl 는 툴킷 스크립트 관리자입니다.
다른 팁
내가 이것을 알고 있는 오래된 스레드,하지만 저는 그래서 그것은 때가 비슷한 질문입니다.이것은 내가 결국 구현하며,그것은 위대한 작동합니다.하려면 제어하는 것 텍스트 상자에 단순히 밖으로 펌프 extender 동안 전화를 렌더링합니다.
Imports System.Web.UI.WebControls
Imports AjaxControlToolkit
Public Class DateTextBox
Inherits TextBox
Private _dateValidator As CompareValidator
Private _calendarExtender As CalendarExtender
Protected Overrides Sub OnInit(ByVal e As System.EventArgs)
MyBase.OnInit(e)
_dateValidator = New CompareValidator
With _dateValidator
.ControlToValidate = ID
Rem set your other properties
End With
Controls.Add(_dateValidator)
_calendarExtender = New CalendarExtender
With _calendarExtender
.TargetControlID = ID
End With
Controls.Add(_calendarExtender)
End Sub
Protected Overrides Sub Render(ByVal writer As System.Web.UI.HtmlTextWriter)
MyBase.Render(writer)
_dateValidator.RenderControl(writer)
_calendarExtender.RenderControl(writer)
End Sub
End Class
당신은 쉽게 추가할 수 있습니다 ajax 캘린더에서 서버 사용자 지정 제어합니다.를 추가할 필요가 두 응용 프로그램에서 참조.1.AjaxControlToolkit.dll 2.시스템입니다.웹.장 의 도움으로 둘째 참고 우리는 모든 속성의"CalendarExtender 에서"서버 사용자 지정 제어합니다.
하려는 경우에는 사용자를 허용하지 않을 유무를 텍스트 상자에만이 가득해 일정 extender 다음을 시도할을 얻을 선택한 날짜에서 텍스트 상자를 제어할 수 있다면 빈 문자열을 설정 텍스트 상자 속성을 읽기 전용으="True".
그 때문에 읽기 전용 컨트롤되지 않은 다시 서버입니다.에 대한 해결 방법이 다음과 같다:
protected void Page_Load(객체를 보낸 후 호출 e)
{
TextBox1.특성이 있습니다.추가("readonly","readonly");
}
도움이 되기를 바랍니다.