我需要处理哪些事件才能允许用户将“水果”添加到评估者或超级下拉列表中。
因为它是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;
}
我可以处理什么事件,因此当用户键入“grape”时,我可以使用自己的密钥将其添加到字典中,然后将其添加到下拉列表中。目前,如果我在单元格中输入“葡萄”,我只会获得格式异常。
此致
_Eric
答案 0 :(得分:2)
得到了Mike @ infragistics的回复,我不知道ValueListResolved
你可以参加很多活动 使用。我可能会用 BeforeCellUpdate或者也许 BeforeExitEditMode。
无论哪种方式,你要做的就是使用 上的ValueListResolved属性 单元格获取ValueList然后你 可以使用GetValue方法来尝试 在列表中找到匹配的项目。使用 获取的cell.EditorResolved.Text 单元格中的当前编辑文本 你的搜索。
答案 1 :(得分:1)
如果对值列表使用“UltraDropDown”,则可以处理它的“BeforeDropDown”事件。将网格中的“used”值与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;
}
}
}
}
答案 2 :(得分:0)
这可能与您的问题相关,也可能不相关,但您的代码中有许多奇怪的内容。
UltraDropDown fruitUltraDropDown = new UltraDropDown();
Infragistics包括用于在designer.cs文件中创建,填充和显示控件的向导。实例化这样的控件会抛弃所有设计器数据并创建一个新的默认控件。你真的打算这个吗?这是摘自designer.cs文件吗?
fruitUltraDropDown.DataSource = fruits.ToList();
这会从您的List<KeyValuePair<int, string>>
创建一个新Dictionary
。 fruits
现在无法访问并且有资格进行垃圾回收,对其进行的任何更改都不会传播到fruitUltraDropDown
。为什么要创建fruits
只是为了扔掉它?
当用户输入“grape”时,我可以处理什么事件......
类型在哪里? 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();
如果这没有帮助,您必须在问题中添加足够的信息,以便没有源代码的人能够理解您的目的。