Hi,
I have created a datatable and wanted to map one of the field with dropdown list in Infopath 2007. But it is not populating, Pls review the code and correct me .....
Full source code
using Microsoft.Office.InfoPath;
using System;
using System.Xml;
using System.Xml.XPath;
using System.Collections;
using Microsoft.Office.Interop.InfoPath.SemiTrust;
using System.Data;
namespace sojutest
{
public partial class FormCode
{
public XDocument thisXDocument;
// Member variables are not supported in browser-enabled forms.
// Instead, write and read these values from the FormState
// dictionary using code such as the following:
//
// private object _memberVariable
// {
// get
// {
// return FormState["_memberVariable"];
// }
// set
// {
// FormState["_memberVariable"] = value;
// }
// }
// NOTE: The following procedure is required by Microsoft Office InfoPath.
// It can be modified using Microsoft Office InfoPath.
public void InternalStartup()
{
EventManager.FormEvents.Loading += new LoadingEventHandler(FormEvents_Loading);
}
public void FormEvents_Loading(object sender, LoadingEventArgs e)
{
ArrayList sortValues = new ArrayList();
XPathNavigator xnDoc = this.MainDataSource.CreateNavigator();
XPathNavigator xnStatus = xnDoc.SelectSingleNode("/my:myFields/my:field1", this.NamespaceManager);
xnStatus.SetValue("test");
// IXMLDOMNodeList DropDownValueNodeList = thisXDocument.DOM.selectNodes("/my:myFields/my:field2");
//foreach (IXMLDOMNode DropDownValueNode in DropDownValueNodeList)
//{
// sortValues.Add(thisXDocument.DOM.selectSingleNode("").text);
//}
//sortValues.Sort();
DataTable table = new DataTable();
//Create 7 columns for this DataTable
DataColumn col1 = new DataColumn("ID");
DataColumn col2 = new DataColumn("Name");
DataColumn col3 = new DataColumn("Checked");
DataColumn col4 = new DataColumn("Description");
DataColumn col5 = new DataColumn("Price");
DataColumn col6 = new DataColumn("Brand");
DataColumn col7 = new DataColumn("Remarks");
//Define DataType of the Columns
//col1.DataType = System.Type.GetType("System.Int");
//col2.DataType = System.Type.GetType("System.String");
//col3.DataType = System.Type.GetType("System.Boolean");
//col4.DataType = System.Type.GetType("System.String");
//col5.DataType = System.Type.GetType("System.Double");
//col6.DataType = System.Type.GetType("System.String");
//col7.DataType = System.Type.GetType("System.String");
//Add All These Columns into DataTable table
table.Columns.Add(col1);
table.Columns.Add(col2);
table.Columns.Add(col3);
table.Columns.Add(col4);
table.Columns.Add(col5);
table.Columns.Add(col6);
table.Columns.Add(col7);
//Create a Row in the DataTable table
DataRow row = table.NewRow();
//Fill All Columns with Data
row[col1] = "1100";
row[col2] = "Computer Set";
row[col3] = true;
row[col4] = "New computer set";
row[col5] = 32000.00;
row[col6] = "NEW BRAND-1100";
row[col7] = "Purchased on July 30,2008";
//Add the Row into DataTable
table.Rows.Add(row);
DataRow row1 = table.NewRow();
row1[col1] = "1100";
row1[col2] = "Computer Set";
row1[col3] = true;
row1[col4] = "New computer set";
row1[col5] = 32000.00;
row1[col6] = "NEW BRAND-1100";
row1[col7] = "Purchased on July 30,2008";
table.Rows.Add(row1);
XPathNavigator xnStatus1 = xnDoc.SelectSingleNode("/my:myFields/my:field4", this.NamespaceManager);
xnStatus1.SetValue("");
XPathNavigator templateNode = xnStatus1.Clone();
foreach (DataRow dr in table.Rows)
{
XPathNavigator newNode = templateNode.Clone();
string value = dr[0].ToString();
newNode.SetValue(value);
xnStatus.SetValue(dr[0].ToString());
xnStatus1.SetValue(dr[0].ToString());
xnStatus1.InsertAfter();
xnStatus1.InsertBefore();
}
}
}
}
Thanks
Soju