Something I really miss in InfoPath 2007 is the possibility to have a simple "reset" button, one that clears all your fields and lets you start all over. I didn't find any out-of-the-box functionality for this, so I wrote some code to make this work. So if you're looking for something that clears all your datasource's fields, try this piece of code:
private void ClearAllFields()
{
//Create a navigator and select the first group in your datasource
XPathNavigator nav = this.MainDataSource.CreateNavigator();
XPathNodeIterator nodes = nav.SelectSingleNode("/my:myFields/my:group1", NamespaceManager).SelectChildren(XPathNodeType.Element);
ClearLevel(nodes);
}
private void ClearLevel(XPathNodeIterator nodes)
{
while (nodes.MoveNext())
{
if (nodes.Current.HasChildren)
{
ClearLevel(nodes.Current.SelectChildren(XPathNodeType.All));
}
if (nodes.Current.NodeType == XPathNodeType.Text)
{
//Reset the value to an empty string
nodes.Current.SetValue("");
}
}
}
Just put the ClearAllFields() method in your button.clicked event handler and it should all work just fine! Make sure you select the right node to start with. Replace the "/my:myFields/my:group1" with the path to your top level group.
Thursday, August 21, 2008
Subscribe to:
Posts (Atom)