using this code u can add,edit delete nodes at runtime
String constr = ConfigurationManager.ConnectionStrings["DbConn"].ToString();
NpgsqlDataAdapter da;
NpgsqlConnection conn;
NpgsqlCommand cmd;
DataSet ds;
DataTable dt;
DataRow dr;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
PopulateRootLevel();
}
conn = new NpgsqlConnection(constr);
conn.Open();
}
public void PopulateRootLevel()
{
conn = new NpgsqlConnection(constr);
conn.Open();
cmd = new NpgsqlCommand("select id,topic,(select count(*) FROM samtopic WHERE parentid=sc.id) as childnodecount FROM samtopic sc where parentID = 0", conn);
da = new NpgsqlDataAdapter(cmd);
dt = new DataTable();
da.Fill(dt);
PopulateNodes(dt, TreeView1.Nodes);
}
public void PopulateNodes(DataTable dt,TreeNodeCollection nodes)
{
foreach(DataRow dr in dt.Rows)
{
TreeNode tn = new TreeNode();
tn.Text = dr["topic"].ToString();
tn.Value = dr["id"].ToString();
nodes.Add(tn);
//If node has child nodes, then enable on-demand populating
tn.PopulateOnDemand = (Convert.ToInt32(dr["childnodecount"]) > 0);
}
TreeView1.ExpandAll();
}
public void PopulateSubLevel(int parentid, TreeNode parentNode)
{
conn = new NpgsqlConnection(constr);
conn.Open();
cmd = new NpgsqlCommand("select id,topic,(select count(*) FROM samtopic WHERE parentid=sc.id) as childnodecount FROM samtopic sc where parentid = @parentid", conn);
cmd.Parameters.Add("@parentid", NpgsqlTypes.NpgsqlDbType.Numeric).Value = parentid;
da = new NpgsqlDataAdapter(cmd);
dt = new DataTable();
da.Fill(dt);
PopulateNodes(dt, parentNode.ChildNodes);
}
protected void TreeView1_TreeNodePopulate(object sender , System.Web.UI.WebControls.TreeNodeEventArgs e)
{
PopulateSubLevel(Convert.ToInt32(e.Node.Value), e.Node);
}
public void instreeview()
{
if(TreeView1.CheckedNodes.Count == 0)
{
TreeNode tn = new TreeNode();
//int parid = Convert.ToInt32(node.Value);
// string Text = txtnode.Text;
cmd = new NpgsqlCommand("insert into samtopic(parentid,topic) values(0,'" + txtnode.Text + "')", conn);
cmd.ExecuteNonQuery();
}
else
{
foreach (TreeNode node in TreeView1.CheckedNodes)
{
TreeNode tn = new TreeNode();
int parid = Convert.ToInt32(node.Value);
cmd = new NpgsqlCommand("insert into samtopic(parentid,topic) values(" + parid + ",'" + txtnode.Text + "')",conn);
cmd.ExecuteNonQuery();
}
}
TreeView1.Nodes.Clear();
PopulateRootLevel();
}
protected void btnadd_Click(object sender, EventArgs e)
{
instreeview();
}
protected void btndel_Click(object sender, EventArgs e)
{
foreach (TreeNode node in TreeView1.CheckedNodes)
{
TreeNode tn = new TreeNode();
int parid = Convert.ToInt32(node.Value);
// string Text = txtnode.Text;
cmd = new NpgsqlCommand("delete from samtopic where id = " + parid +"", conn);
cmd.ExecuteNonQuery();
}
TreeView1.Nodes.Clear();
PopulateRootLevel();
}
protected void btnedit_Click(object sender, EventArgs e)
{
edittreeview();
}
public void edittreeview()
{
foreach (TreeNode node in TreeView1.CheckedNodes)
{
TreeNode tn = new TreeNode();
int parid = Convert.ToInt32(node.Value);
cmd = new NpgsqlCommand("update samtopic set topic = '" + txtnode.Text + "' where id = " + parid + "", conn);
cmd.ExecuteNonQuery();
}
TreeView1.Nodes.Clear();
PopulateRootLevel();
}
}
|