2017-10-03 5 views
0

콘텐츠를 만들고 GridViewTemplateColumn 내에 삽입 할 수있는 템플릿을 편집하여 템플릿을 다시 사용할 수 있고 HTML에 템플릿을 반복적으로 삽입 할 수 있습니까?사용자 지정 GridViewTemplateColumn 또는 ContentTemplate 및 EditTemplate?

필자는 비슷한 기능 (내용 단계에서 텍스트가 있고 편집시 여러 줄 텍스트 상자가 있어야 함)이 필요한 약 15 개의 열을 가지고 있으며 템플릿 열을 사용하여 정상적으로 작동합니다.

그러나 템플릿을 변경하려면 모든 템플릿을 변경해야합니다.

템플릿 열을 확장하기 위해 사용자 정의 컨트롤을 만드는 것으로부터이 기능을 얻으려는 모든 노력을 다했으나 DotVVM에 대해 충분히 알지 못했을 수 있습니다.

도움을 주시면 감사하겠습니다.

해결! 아래 해결 방법. DotvvmStartup.cs

에서

public class MultiLineTextColumn : GridViewTextColumn 
{ 

    public override void CreateEditControls(IDotvvmRequestContext context, DotvvmControl container) 
    { 
     var textBox = new TextBox(); 
     textBox.FormatString = FormatString; 
     textBox.ValueType = ValueType; 
     textBox.SetBinding(TextBox.TextProperty, GetValueBinding(ValueBindingProperty)); 

     textBox.Type = TextBoxType.MultiLine; 

     container.Children.Add(textBox); 
    } 
} 

config.Markup.Controls.Add(new DotvvmControlConfiguration 
    { 
     TagPrefix = "cc", 
     Namespace = "Project.Controls", 
     Assembly = "Project" 

    }); 
+0

사용자 정의 컨트롤을 사용하는 것이 올바른 접근 방법이라고 생각합니다. 시도한 것을 보여줄 수 있습니까? 차라리 전체 솔루션을 게시하지 않을 것입니다. –

답변

0

당신은 당신의 자신의 열 유형을 만들 수 있습니다.

  1. GridViewColumn에서 상속하는 클래스를 만듭니다.

  2. CreateControls, CreateEditControlsCreateInsertControls을 오버라이드하고 셀 내부에 제어 트리를 구축하십시오.

당신이 여러 줄 편집 셀을 만들기 위해 병약 한 경우 수정할 수있는 default GridViewTextColumn - 단지 CreateEditControls 방법에 TypeMultiLine에 설정합니다.

  1. register the controlDotvvmStartup으로 설정해야합니다.
+0

도움을 주셔서 감사합니다! 메인 포스트를 업데이트했습니다. 또한 설명서가 오래되었다거나 구성에 사용할 수있는 방법이 나열된 것보다 나를 위해 다르다고 생각합니다. – Aron