Avatar
N-nojmi
Člen
Avatar
N-nojmi:

Zdravím, mám kód na naplnění TreeView.
Funguje, ale jen za podmínky, že pole které selektuji v obou dotazech musí mít stejný název.

Jediné co potřebuji je, aby ve druhém selectu mohl dát místu stávajícího DIC => Obdobi :

DataTable dtChild = this.GetData("SELECT ID_Obdobi, Obdobi FROM T_Obdobi WHERE ID_Dic = " + child.Value);
protected void Page_Load(object sender, EventArgs e)
{
    if (!this.IsPostBack)
    {
        DataTable dt = this.GetData("SELECT ID_Dic, Dic FROM T_Dic");
        this.PopulateTreeView(dt, 0, null);
    }
}

private void PopulateTreeView(DataTable dtParent, int parentId, TreeNode treeNode)
{
    foreach (DataRow row in dtParent.Rows)
    {
        TreeNode child = new TreeNode
        {
            Text = row["Dic"].ToString(),
            Value = row["ID_Dic"].ToString()
        };
        if (parentId == 0)
        {
            TreeView1.Nodes.Add(child);
            DataTable dtChild = this.GetData("SELECT ID_Obdobi, Dic FROM T_Obdobi WHERE ID_Dic = " + child.Value);
            PopulateTreeView(dtChild, int.Parse(child.Value), child);
        }
        else
        {
            treeNode.ChildNodes.Add(child);
        }
    }
}

private DataTable GetData(string query)
{
    DataTable dt = new DataTable();
    string constr = ConfigurationManager.ConnectionStrings["zamest"].ConnectionString;
    using (SqlConnection con = new SqlConnection(constr))
    {
        using (SqlCommand cmd = new SqlCommand(query))
        {
            using (SqlDataAdapter sda = new SqlDataAdapter())
            {
                cmd.CommandType = CommandType.Text;
                cmd.Connection = con;
                sda.SelectCommand = cmd;
                sda.Fill(dt);
            }
        }
        return dt;
    }
}

předem děkuji za rady ;)

Odpovědět 27.3.2015 10:59
Není hloupých lidí, jen lidí co málo používají google...
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 1 zpráv z 1.