0

ObjectDataSource からのデータが供給された DevExpress からの ASPxGridView があります。私のデータ行オブジェクトは、ParameterName、ParameterType、ParameterValue などのプロパティを公開します。

//Properties, constructor and private fields code omitted for clarity
public class InputParameterDescription
{
   public string ParameterName;

   public Type ParameterType;

   public int ParameterPrecision;

   public string ParameterDescription;
}

ParameterValue は、常に ParameterType プロパティによって示される型のオブジェクトです。実際、Int32、Double、String、Boolean など、いくつかの型を使用しています。グリッドに値を表示し、ユーザーが [編集] をクリックすると、ParameterValue は常に TextBox で編集されます。ParameterType に応じて、この列のエディターを変更することはできますか? ユーザーに、整数には SpinEdit、ブール値にはチェックボックスなどを使用してもらいたい.

実際、これは人々が DevExpress Delphi グリッド (TdxGrid および TcxGrid (OnGetProperties イベント)) を操作してきた方法です。DevExpress フォーラムでこの質問をしましたが、回答がありません :(

4

1 に答える 1

0

その列に、切り替えを行うテンプレートを作成できます。何かのようなもの:

public class SwitchTemplate : ITemplate
{
   public void Instantiate(Control container)
   {
      GridViewDataItemTemplateContainer cnt = (GridViewDataItemTemplateContainer) container;
      switch( GetStringParameterTypeFromDataItem(cnt.DataItem) )
      {
         case "Int32":
            container.Controls.Add( new ASPxSpinEdit() { ... } );
            break;

         case "DateTime":
            container.Controls.Add( new ASPxDateEdit() { ... } );
            break;

         case "String":
            container.Controls.Add( new ASPxTextBox() { ... } );
            break;

         ...
      }  
   }
}

次に、このテンプレートを列の EditItemTemplate として指定する必要があります。

myGrid.Columns["MyColumnName"].EditItemTemplate = new SwitchTemplate()
于 2009-10-13T07:45:34.293 に答える