0

ユーザーが値リストまたはウルトラドロップダウンのいずれかに「果物」を追加できるようにするために処理する必要があるイベント。

KVPなので、常にフォーマット例外が発生します

Dictionary<int,string> fruits = new Dictionary<int,string>();



 private void FruitInit()
     {
    //Create some fruit        
    fruits.Add(-1,"apple");
            fruits.Add(-2,"banana");

            //Create and add to the ultraDropDown
            UltraDropDown fruitUltraDropDown = new UltraDropDown();
            fruitUltraDropDown.DataSource = fruits.ToList();
            fruitUltraDropDown.DisplayMember = "Value";
            fruitUltraDropDown.ValueMember = "Key";
            MyUltraGrid.DisplayLayout.Bands[0].Columns["MyColumn"].ValueList = fruitUltraDropDown;
        }

どのイベントを処理できるので、ユーザーが「ブドウ」と入力すると、独自のキーで辞書に追加でき、ドロップダウンリストに追加されます。現在、セルに「ブドウ」と入力すると、フォーマット例外が発生します。

よろしく

_エリック

4

3 に答える 3

2

Mike @ infragisticsから返信がありましたが、ValueListResolvedについて知りませんでした。

マイクからの回答

使用できるイベントはたくさんあります。私はおそらくBeforeCellUpdateまたはBeforeExitEditModeを使用するでしょう。

いずれにせよ、セルのValueListResolvedプロパティを使用してValueListを取得してから、GetValueメソッドを使用してリストから一致するアイテムを見つけようとします。cell.EditorResolved.Textを使用して、検索用のセル内の現在の編集テキストを取得します。

于 2010-12-22T16:38:57.527 に答える
2

値リストに「UltraDropDown」を使用すると、「BeforeDropDown」イベントを処理できます。グリッドの「使用済み」の値を UltraDropDown の値と比較し、使用中の値を非表示にします。私のために働いた。

    private void BindApprovalsTab()
    {
        uddApproverList.BeforeDropDown -= new CancelEventHandler(uddApproverList_BeforeDropDown);
        uddApproverList.DataSource = dsFindingDetails.Tables["Approvers"];
        uddApproverList.DisplayMember = "fldDisplayName";
        uddApproverList.ValueMember = "fldRoleGID";
        uddApproverList.Width = 150;
        uddApproverList.DisplayLayout.Bands[0].Columns["fldRoleGID"].Hidden = true;
        uddApproverList.DisplayLayout.Bands[0].Columns["fldDisplayName"].Header.Caption = "Role";
        uddApproverList.DisplayLayout.Bands[0].Columns["fldDisplayName"].Width = uddApproverList.Width;
        uddApproverList.BeforeDropDown += new CancelEventHandler(uddApproverList_BeforeDropDown);

        ugActionItemApprovals.DataSource = dsFindingDetails.Tables["tblIssueApprovals"];

    }

    void uddApproverList_BeforeDropDown(object sender, CancelEventArgs e)
    {
        //assume all rows show
        foreach (UltraGridRow udr in uddApproverList.Rows)
        {
            udr.Hidden = false;
        }
        //can we remove already used entries?
        foreach (UltraGridRow udr in uddApproverList.Rows)
        {
            string sDDRoleGID = udr.Cells["fldRoleGID"].Value.ToString();
            foreach (UltraGridRow ur in ugActionItemApprovals.Rows)
            {
                if (ur.Cells["fldApprovalRequiredBy"].Value.ToString() == sDDRoleGID)
                {
                    udr.Hidden = true;
                    break;
                }
            }
        }
    }
于 2012-05-17T19:35:18.557 に答える
0

これはあなたの質問に関連する場合と関連しない場合がありますが、コードには多くの奇妙なことがあります。

UltraDropDown fruitUltraDropDown = new UltraDropDown();

Infragistics には、designer.cs ファイルでコントロールを作成、設定、および表示するためのウィザードが含まれています。このようなコントロールをインスタンス化すると、すべてのデザイナー データが破棄され、新しい既定のコントロールが作成されます。あなたは本当にこれを意図していますか?これは designer.cs ファイルからの抜粋ですか?

fruitUltraDropDown.DataSource = fruits.ToList();

これにより、List<KeyValuePair<int, string>>から新しい が作成されますDictionaryfruitsに到達できず、ガベージ コレクションの対象となるため、変更が に反映されることはありませんfruitUltraDropDownfruitsなんで捨てるためだけに作ってるの?

ユーザーが「ブドウ」と入力したときに、どのイベントを処理できますか...

タイプどこ?fruitUltraDropDown? デザイナー データは破棄されているため、fruitUltraDropDown表示されていないコードが大量にない限り、編集できません。MyUltraGrid? このためのコードは表示されないため、何を実装しているのか誰もわかりません。テキストフィールド?プログラマティックデータ?完全な謎。

辞書に追加できます...

Dictionaryもう使用しないため、何かを追加しても意味がありません。追加したい場合は、次を追加するultraDropDown1.DataSource必要がありますKeyValuePair<int, string>

var ds = ultraDropDown1.DataSource as List<KeyValuePair<int, string>>;
ds.Add(new KeyValuePair<int,string>(-3, "grape"));

これは、エントリをバッキング ストアに追加するだけです。に含めたい場合ultraDropDown1

ultraDropDown1.DataBind();

これが役に立たない場合は、ソース コードを持たない人が何をしようとしているのかを理解できるように、質問に十分な情報を追加する必要があります。

于 2010-12-22T18:54:54.867 に答える