I need to populate a repeating section inside repeating section.
I am using SQL Stored Proc to get the data from the database.
Here is my Info path datasource
-Myfields
- group1
-group 2
- Agenda
- group 3
- group 4
- Description
- ECD
There can be multiple Agenda and each agenda can have multiple Description and ECD.
Here is my code
public void getOldBusiness()
{
SqlConnection myConnection = new SqlConnection(m_ConnectionString);
XPathNavigator myNav = MainDataSource.CreateNavigator();
myConnection.Open();
SqlCommand business_cmd = new SqlCommand("Get_Business", myConnection);
SqlDataAdapter myDataAdapter = new SqlDataAdapter();
myDataAdapter.SelectCommand = business_cmd;
business_cmd.CommandType = CommandType.StoredProcedure;
business_cmd.Parameters.AddWithValue("@Meeting_ID", _URLUniqueID);
business_cmd.Parameters.AddWithValue("@Meeting_Flag_Old_New", "O");
DataTable myDataTable = new DataTable();
myDataAdapter.Fill(myDataTable);
// Get a reference to the node the repeating table is bound to
XPathNavigator xNav;
xNav = MainDataSource.CreateNavigator().SelectSingleNode("/my:myFields/my:group1/my:group2", this.NamespaceManager);
foreach (DataRow row in myDataTable.Rows)
{
XPathNavigator xRow = xNav.Clone();
string s_Agenda_Name = row.ItemArray[1].ToString();
int i_Meeting_Business_ID = Convert.ToInt32(row.ItemArray[0].ToString());
xRow.SelectSingleNode("/my:myFields/my:group1/my:group2/my:Agenda", this.NamespaceManager).SetValue(s_Agenda_Name);
xNav.InsertBefore(xRow);
getOldBusinessDisucssion(_URLUniqueID, s_Agenda_Name);
}
xNav.DeleteSelf();
}
public void getOldBusinessDisucssion(string meeting_ID, string agenda_Name, )
{
SqlConnection myConnection = new SqlConnection(m_ConnectionString);
myConnection.Open();
SqlCommand business_cmd = new SqlCommand("Get_Meeting_Business_Item_Discussion", myConnection);
SqlDataAdapter myDataAdapter = new SqlDataAdapter();
myDataAdapter.SelectCommand = business_cmd;
business_cmd.CommandType = CommandType.StoredProcedure;
business_cmd.Parameters.AddWithValue("@Meeting_ID", meeting_ID);
business_cmd.Parameters.AddWithValue("@Meeting_Business_ID", meeting_Busiess_ID);
DataTable myDataTable = new DataTable();
myDataAdapter.Fill(myDataTable);
// Get a reference to the node the repeating table is bound to
XPathNavigator repTable = xNav.CreateNavigator().SelectSingleNode("/my:myFields/my:group1/my:group2/my:group3/my:group4", NamespaceManager);
XPathNavigator node;
foreach (DataRow row in myDataTable.Rows)
{
string s_Meeting_Discussion = row.ItemArray[0].ToString();
node = repTable.Clone();
node.SelectSingleNode("/my:myFields/my:group1/my:group2/my:group3/my:group4/my:Description", NamespaceManager).SetValue(s_Meeting_Discussion);
xNav.InsertBefore(node);
}
}