2012-08-02 34 views
1

我在两个列表框之间创建数据传输控件。 我有两个框中显示的项目,文本和属性值保存数据。 虽然我从一个转移到另一个,但我可以访问转移的项目(使用调试)并查看文本属性(不是value属性),但它不显示在我发送给它的列表框中。 我甚至尝试刷新对象,但没有运气。列表框项目消失/插入时不显示

谁能告诉我我做错了什么?

private void btnToLeft_Click(object sender, EventArgs e) 
    { 
      Telerik.WinControls.UI.RadListDataItem item = new Telerik.WinControls.UI.RadListDataItem(lstRight.SelectedItem.DisplayValue.ToString(), lstRight.SelectedItem.Value); 
      lstLeft.Items.Add(item); 
      lstRight.Items.RemoveAt(lstRight.SelectedItem.RowIndex); 
      lstLeft.Refresh(); 
      lstRight.Refresh(); 
    } 

回答

1

这是我用于类似情况的代码。

private void btnToLeft_Click(object sender, EventArgs e) 
{ 
     if (lstRight.Items.Count == 0) { return; } 
     if (lstRight.SelectedItem == null) { return; } 

     RadListDataItem item = lstRight.SelectedItem; 
     lstRight.Items.Remove(item); 
     lstLeft.Items.Add(item); 
} 

你可以让这个更通用一点。

private void MoveToTargetListBox(RadListControl sourceListBox, RadListControl targetListBox) 
{ 
    try 
    { 
    if (sourceListBox.Items.Count == 0) { return; } 
    if (sourceListBox.SelectedItem == null) { return; } 

    RadListDataItem item = sourceListBox.SelectedItem; 
    sourceListBox.Items.Remove(item); 
    targetListBox.Items.Add(item); 
    } 
    catch (Exception ex) 
    { 
    //handle Exception 
    } 
} 

private void btnToLeft_Click(object sender, EventArgs e) 
{ 
    MoveToTargetListBox(lstRight, lstLeft); 
} 

private void btnToRight_Click(object sender, EventArgs e) 
{ 
    MoveToTargetListBox(lstLeft, lstRight); 
} 
+0

感谢这对我几乎适用 - 当我移动项目,但价值是失去了。 ..。任何想法如何让它保持/坚持? – sharcfinz 2012-08-03 15:37:18

0

我想我想通了。 。 。我引用了lstRight.SelectedItem.DisplayValue.ToString()而不是文本值 - lstRight.SelectedItem.Text

似乎现在就工作。 ..。 !