Tengo un TreeView
que carga con una función recursiva
que la llamo desde el load_form
private void CrearNodosPadre(int indicePadre, TreeNode nodePadre)
{
negociotreeview objc_treeview = new negociotreeview();
dataTableNodos = objc_treeview.RecogerDatos();
DataView dataViewNodosHijos = new DataView(dataTableNodos);
dataViewNodosHijos.RowFilter = dataTableNodos.Columns["IdPadre"].ColumnName + " = " + indicePadre;
foreach (DataRowView dataFilas in dataViewNodosHijos)
{
TreeNode nuevoNodo = new TreeNode();
nuevoNodo.Text = dataFilas["Codigo"].ToString().Trim() + " " + dataFilas["Nombre"].ToString().Trim();
nuevoNodo.Name = dataFilas["IdPCuentas"].ToString().Trim();
nuevoNodo.Tag = dataViewNodosHijos.Table.Rows.IndexOf(dataFilas.Row);
if (nodePadre == null)
{
treeView1.Nodes.Add(nuevoNodo);
}
else
{
nodePadre.Nodes.Add(nuevoNodo);
}
CrearNodosPadre(Int32.Parse(dataFilas["IdPCuentas"].ToString()),
nuevoNodo);
}
}
En la llamada dataTableNodos = objc_treeview.RecogerDatos();
llamo a mi
select * from treeview
el problema esta en que cuando agrego un nuevo nodo desde visual studio para guardarlo en mi base de datos y al seleccionarlo me aparece un error:
system.nullreferencexception: "Referencia a objeto no establecida como instancia de un objeto"
system.windows.form.treenode.tag.get devolvio null
en esta parte de mi código:
public void MostrarNodosText(TreeNode nodeData)
{
DataTable dataTableNodos = new DataTable();
dataTableNodos = objc_treeview.RecogerDatos();
DataRow filasDatos;
filasDatos = dataTableNodos.NewRow();
filasDatos = dataTableNodos.Rows[int.Parse(nodeData.Tag.ToString())]; //aqui sale el error
textBox1.Text = filasDatos["Codigo"].ToString();
textBox2.Text = filasDatos["Nombre"].ToString();
textBox3.Text = filasDatos["Cod_rapido"].ToString();
}
y esa funcion la llamo a su vez en treeView1_AfterSelect
Si intento cargar de nuevo el Treeview
se me repiten los datos, pero no se si eso resuelva el problema, alguna sugerencia?