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.
Showing posts with label reset values. Show all posts
Showing posts with label reset values. Show all posts
Thursday, August 21, 2008
Subscribe to:
Posts (Atom)
