• Lunes 13 de Mayo de 2024, 04:47

Autor Tema:  TreeView y tablas de sql 2005  (Leído 1117 veces)

mago_del_bosque

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
TreeView y tablas de sql 2005
« en: Jueves 29 de Julio de 2010, 17:23 »
0
Buenos dias, he tenido una duda que me esta haciendo llorar,les explico: quiero cargar los datos de una base de taos con la siguiente columnas; Id, Localizacion, Padre; para extraer los datos ejecuto un procedimiento almacenado desde C# y lo cargo en un dataSET(creo que en esta parte surge el inconveniente) una vez que hago esto empiezo a cargar el arbol pero por mas que lo intento no logro cargarlo, o me da error de recursion o simplente no me sale, por favor si me podrian corregir mi codigo;
private void CrearDataSet()
{
dataSetArbol = new DataSet("DataSetArbol");

DataTable tablaArbol = dataSetArbol.Tables.Add("TablaArbol");
tablaArbol.Columns.Add("Localizacion", typeof(string));
tablaArbol.Columns.Add("Id", typeof(Int32));
tablaArbol.Columns.Add("Padre", typeof(Int32));
string connstring = "Password=123;Persist Security Info=True;User ID=cavallaro;Initial Catalog=manteminiento;Data Source=192.168.20.186,1433";
using (SqlConnection connection = new SqlConnection(connstring))
{
connection.Open();

SqlCommand command = new SqlCommand("localizacionPadre", connection);
command.CommandType = System.Data.CommandType.StoredProcedure;
command.CommandTimeout = 10;
SqlDataAdapter da = new SqlDataAdapter(command);
DataTable dt = new DataTable();
da.Fill(dataSetArbol, "TablaArbol");
connection.Close();
}
}
private void CrearNodosDelPadre(int indicePadre, TreeNode nodePadre)
{
DataView dataViewHijos = new DataView(dataSetArbol.Tables["TablaArbol"]);
dataViewHijos.RowFilter = dataSetArbol.Tables["TablaArbol"].Columns["Padre"].ColumnName + " = " + indicePadre;
foreach (DataRow dataRowCurrent in dataSetArbol.Tables["TablaArbol"].Rows)

{
TreeNode nuevoNodo = new TreeNode();
nuevoNodo.Text = dataRowCurrent["Localizacion"].ToString().Trim();

if (nodePadre == null)
{
treeView1.Nodes.Add(nuevoNodo);
}
else
{
nodePadre.Nodes.Add(nuevoNodo);
}
CrearNodosDelPadre(Int32.Parse(dataRowCurrent["Id"].ToString()), nuevoNodo);

}

}

}