2017-10-03 7 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,CreateEditControlsおよびCreateInsertControlsを上書きし、細胞内にコントロールツリーを構築する。

あなたは複数行のエディット・セルを作るために弱々しい場合は、変更することができdefault GridViewTextColumn - ちょうどCreateEditControls方法でTypeMultiLineに設定してください。

  1. register the controlDotvvmStartupに設定する必要があります。
+0

助けてくれてありがとう!私はメインポストを更新しました。また、ドキュメントが古くなっていると思われたり、構成で使用できるメソッドがリストされているものと違っている可能性があります。 – Aron

関連する問題