Hi,
You can achieve this using the following code. Write an on after change event for the check box.
[InfoPathEventHandler(MatchPath = "/my:myFields/my: Bestellungen/my: Bestellung/my: check", EventType = InfoPathEventType.OnAfterChange)]
public void field29_OnAfterChange(DataDOMEvent e)
{
if (e.IsUndoRedo)
{
return;
}
if (e.Site.text == "true")
{
string Artikelnummer = e.Site.parentNode.selectSingleNode("my: Artikelnummer").text;
IXMLDOMNodeList uCheckNodes = thisXDocument.DOM.selectNodes(string.Format("/my:myFields/my: Updates/my: Update [my: uArtikelnummer = '{0}']/my: uCheck", Artikelnummer));
foreach (IXMLDOMNode uCheckNode in uCheckNodes)
{
setNodeValue(uCheckNode, true);
}
}
}
private void setNodeValue(IXMLDOMNode node, object newValue)
{
if (node == null || newValue == null)
return;
string value = Convert.ToString(newValue, CultureInfo.InvariantCulture);
// The xsi:nil needs to be removed before we set the value.
if ((node.nodeType != DOMNodeType.NODE_ATTRIBUTE) && (value.Length != 0))
{
IXMLDOMElement elementNode = node as IXMLDOMElement;
if ((elementNode != null) && (elementNode.getAttribute("xsi:nil") != null))
{
elementNode.removeAttribute("xsi:nil");
}
}
// Force boolean values to lowercase.
if (newValue.GetType() == Type.GetType("System.Boolean"))
value = value.ToLower(cultureInfo);
// Setting the value would mark the document as dirty.
// Let's do that if the value has really changed.
if (String.Compare(node.text, value) != 0)
node.text = value;
}