2017-08-30 11 views
1

UIにコンボボックスを追加しました。カスタムアクションからWIXコンボボックスを設定する方法

<Control Id ="ExistingPortCombo" Type="ComboBox" X="120" Y="120" Width="200" Height="50" Property="ComboSelectedPort" ComboList="yes" > 
<ComboBox Property="ComboSelectedPort" /> 
</Control> 

カスタムアクションから入力します。私はそんなことをするために腹を立てます。ここで

はリスト

static int index = 0; 
    private static void AddRecordToList(string propertyName,string text,string value,string control) 
     { 
      try 
      { 
       View view = CurrentSession.Database.OpenView("SELECT * FROM " + control); 

       view.Execute(); 

       Record record = CurrentSession.Database.CreateRecord(4); 

       record.SetString(1, propertyName); 
       record.SetInteger(2, ++index); 
       record.SetString(3, text); 
       record.SetString(4, value); 

       view.Modify(ViewModifyMode.InsertTemporary, record); 
       view.Close(); 
      } 
      catch (Exception ex) 
      { 
       global::System.Windows.Forms.MessageBox.Show(ex.Message); 
      } 
     } 

を埋めるために私の関数である。そして、私はと呼び出し:このメソッドは、リストボックスのために動作しますが、しかし、コンボボックスのエラーが発生します

AddRecordToComboBox("ComboSelectedPort", text, value,"ComboBox"); 

誰でも私がここで間違っているのを見ることはできますか?

答えて

1

thisポストに基づいて、私は埋めることができ

は私が持っていたの.msiでコンボボックスのテーブルを作成するコンボボックスを値に項目を追加します。

<ListItem Value="1" Text="DumyData" /> 

私がここに追加したアイテムはComboBoxに表示されていなかったので、今のところこれで問題ありません。誰かがこれを正しい方法で行う方法を知っていれば、回答は大歓迎です。

私のコントローラは次のようになりました。

<Control Id ="ExistingPortCombo" Type="ComboBox" X="120" Y="120" Width="200" Height="50" Property="ComboSelectedPort" ComboList="yes" > 
<ComboBox Property="ComboSelectedPort" > 
    <ListItem Value="1" Text="DumyData" /> 
</ComboBox> 

0

私はほとんど同じ方法を使用しました。

あなたはファイルからの読み取りポートリストのこの例を試すことができます。

[CustomAction] 
    public static ActionResult GetPortsFromFile(Session session) 
    { 
      const string tableName = "ComboBox"; 
      const string Property = "ComboSelectedPort"; 
      const string PortsConfigFile = "Ports.txt"; 

      string strPorts = File.ReadAllText(PortsConfigFile); 

      string[] PortsList = strPorts.Split(','); 

      int order = 2; 
      foreach (var Port in PortsList) 
      { 
       string value = Port.ToString(); 
       string text = Port.ToString(); 
       object[] fields = new object[] { Property, order, value, text }; 
       InsertRecord(session, tableName, fields); 

       order++; 
      } 

      return ActionResult.Success; 
    } 

    private static void InsertRecord(Session session, string tableName, Object[] objects) 
    { 
     Database db = session.Database; 
     string sqlInsertSring = db.Tables[tableName].SqlInsertString + " TEMPORARY"; 
     session.Log("SqlInsertString is {0}", sqlInsertSring); 
     View view = db.OpenView(sqlInsertSring); 
     view.Execute(new Record(objects)); 
     view.Close(); 
    } 
関連する問題