Well, Hillary I wish I was a smart as you. Thanks.
I did it in code which works I guess it's just not as elegant.
First chunk of code goes in FormEvents_Loading
using (SPSite site = new SPSite(SPContext.Current.Site.ID))
{
SPWeb web = site.OpenWeb(SPContext.Current.Web.ID); //grab the current web
RemoveFirstItem();
SPList list = web.Lists["FirstList"];
SPView view = list.Views["FirstListView"];
SPListItemCollection listItems = list.GetItems(view);
List<string> DoHickies= new List<string>();
foreach (SPListItem item in listItems)
{
string myValue = item["FieldName"].ToString();
if (!String.IsNullOrWhiteSpace(myValue) && myValue.StartsWith("6-"))
{
DoHickies.Add(myValue);
}
}
SPList listRemove = web.Lists["ListTwo"];
SPListItemCollection listRemoveItems = listRemove.Items;
foreach (SPListItem item in listRemoveItems)
{
string myValue = item["FIELDNAME"].ToString();
if (!String.IsNullOrWhiteSpace(myValue) && myValue.StartsWith("6-"))
{
try
{
DoHickies.Remove(myValue);
}
catch
{
}
}
}
foreach (var thing in DoHickies)
{
AddItem(thing, thing);
}
RemoveFirstItem();
if (web != null)
{
web.Dispose();
}
}
private void AddItem(string itemId, string itemName)
{
XPathNavigator DOM = DataSources["choices"].CreateNavigator();
XPathNavigator group1 = DOM.SelectSingleNode("//options", NamespaceManager);
XPathNavigator field1 = DOM.SelectSingleNode("//options/option", NamespaceManager);
XPathNavigator newNode = field1.Clone();
newNode.SelectSingleNode("value").SetValue(itemId);
newNode.SelectSingleNode("displayname").SetValue(itemName);
group1.AppendChild(newNode);
}
private void RemoveFirstItem()
{
XPathNavigator DOM = DataSources["choices"].CreateNavigator();
XPathNavigator group1 = DOM.SelectSingleNode("//options", NamespaceManager);
XPathNavigator field1 = DOM.SelectSingleNode("//options/option", NamespaceManager);
field1.DeleteSelf();
}
Thanks to S.Y.M for most of the code above. She is also a genius: http://www.bizsupportonline.net/infopath2007/programmatically-fill-populate-drop-down-list-box-infopath-2007.htm