开发者

How to make the particular row get selected in datagridview based on treeview selection

开发者 https://www.devze.com 2023-01-15 04:32 出处:网络
I will have a treenode with some nodes. I will have a datagridview on my form. Initially i will load some data in to the gridview. Now if i select a node at my 开发者_高级运维trreview i would like to

I will have a treenode with some nodes. I will have a datagridview on my form. Initially i will load some data in to the gridview. Now if i select a node at my 开发者_高级运维trreview i would like to make a particular row as selected one.

Suppose my treeview is as follows

Root |-> Child |->Child1

If i select child i would like to make a corresponding row as selected if child1 another row should get selected.

Any idea please


1) you need to map the nodes to corresponding datagrid rows

this.dataGridView1.Rows[0].Tag = id; // a node id

2) handle node click event and find corresponding row by id and select it

if (tvwACH.SelectedNode.Parent != null)
{
        int id  = (int)tvwACH.SelectedNode.Tag ; // make sure you've already assigned tag when creating Three nodes and data rows
        foreach(DataGridViewRow  row in this.dataGridView1.Rows)
        {
           int rowId = (int)row.Tag ;
            if(rowId == id)
            {
              row.Selected = ture;
            }
            else
            {
              row.Selected = false; //discard other rows 
            }

         }
}


yourDataGridView.Rows(nRowIndex).Selected = true;


This is the code i have written

   private void tvwACH_AfterSelect(object sender, TreeViewEventArgs e)
    {

        string node = string.Empty;
        if (tvwACH.SelectedNode.Parent != null)
        {
             node = tvwACH.SelectedNode.Text.ToString();
            if (node == "FileHeader")
            {
                int tag = Convert.ToInt16(tvwACH.SelectedNode.Tag.ToString());
                this.dataGridView1.Rows[0].Tag = tag;
                foreach (DataGridViewRow row in dataGridView1.Rows)
                {
                    int rowId = (int)row.Tag;
                    if (rowId == tag)
                    {
                        row.Selected = true;
                    }
                }
            }

            string strSwitch = tvwACH.SelectedNode.Parent.Text;
            switch (strSwitch)
            {
                case "ACH":
                    {
                        dataGridView1.Visible = true;
                        dataGridView1.Rows.Clear();
                        node = tvwACH.SelectedNode.Text;
                        StreamReader sr = new StreamReader(node);
                        while (sr.Peek() >= 0)
                        {
                            string line = sr.ReadLine();
                            dataGridView1.Rows.Add(rectype[line.Substring(0, 1)].ToString(), line);
                        }
                        sr.Close();
                    }

                    break;

            }
        }
    }


Try this:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }
    int flage = 1;
    private void button1_Click(object sender, EventArgs e)
    {
        flage = 1;
        for (int i = 0; i < dataGridView1.Rows.Count; i++)
        {

            if (dataGridView1.Rows[i].Selected)
            {
                DataGridViewRow currentRow = dataGridView1.SelectedRows[0];


                TreeNode node1 = new TreeNode(currentRow.Cells[1].Value.ToString());
                TreeNode node2 = new TreeNode(currentRow.Cells[2].Value.ToString());
                TreeNode node3 = new TreeNode(currentRow.Cells[3].Value.ToString());
                TreeNode[] TreeArray = new TreeNode[] { node1,node2, node3 };
                TreeNode finalnode = new TreeNode(currentRow.Cells[0].Value.ToString(), TreeArray);

                treeView1.Nodes.Add(finalnode);
                flage = 1;
                break;
            }
            else
            {
                flage = 0;


            }
        }
       if(flage==0)
        {
            MessageBox.Show("Row is not Selected Please select the row");
        }
    }

    private void button2_Click(object sender, EventArgs e)
    {
        treeView1.Nodes.Remove( treeView1.SelectedNode);
    }

    int flage2;
    private void button3_Click(object sender, EventArgs e)
    {

        for (int i = 0; i < dataGridView1.Rows.Count; i++)
        {
            if (dataGridView1.Rows[i].Selected)
            {
                dataGridView1.Rows.Remove(dataGridView1.SelectedRows[0]);
                flage2 = 1;
                break;
            }

            else
            {
                flage2 = 0;
            }
        }
        if (flage2 == 0)
        {
            MessageBox.Show("Row is not selected Please select the row");
        }

    }
}
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号