如何做到C1TrueDBGrid列排序时,选中数据行的状态不变.
如:列名:aaa   bbb   ccc
一行:111   222   123
二行:123   333   555
三行:133   444   666
四行:144   766   909选中的是一行:111   222   123
点击列“aaa"后排序后:
列名:aaa   bbb   ccc
一行:144   766   909
二行:133   444   666 
三行:123   333   555
四行:111   222   123目前选中还是一行:144   766   909怎么做到选中四行:111   222   123 呢??

解决方案 »

  1.   

    C1TrueDBGrid 做列排序后选择数据行不变.
      

  2.   

    C1TrueDBGrid不知道是DataGrid还是其他的第三方控件,
    以DataGrid举例,可以在排序前记录下当前选中行的主键,然后帮定后重新定位到该行排序前:string id = this.DataGrid1.SelectedItem.Cells[0].Text ;排序后:
    foreach(DataGridItem r in this.DataGrid1.Items)
    {
    if(r.Cells[0].Text == id)
    {
    this.DataGrid1.SelectedIndex = r.ItemIndex;
    break;
    }
    }
      

  3.   

    C#2003 C# DataGrid 没有如下的属性
    DataGrid1.SelectedItem
    DataGrid1.SelectedIndex
      

  4.   

    第三方的C1TrueDBGrid更没有
    SelectedItem
    SelectedIndex
    属性了.
      

  5.   

    你好,我用的是datagridview,應該和datagrid沒有太大區別。
    我的辦法比較笨拙,是先每次點擊行的時候,用一string變量讀取每行第一列的數值,
    在每次進行排序的時候加上個ColumnHeaderMouseClick事件,把剛剛的值傳入進來再進行選中動作!
    方法很笨啊,效果還好啊,我的數據77條沒有影響,大的數據量就不知道了!
    代碼如下:
    //定義變量
    string sCell="";
    //委託方法
    private void Form1_Load(object sender, EventArgs e)
            {
                dataGridView1.Click += new EventHandler(dataGridView1_Click);
                dataGridView1.ColumnHeaderMouseClick += new DataGridViewCellMouseEventHandler(dataGridView1_ColumnHeaderMouseClick);
             }
    //賦值變量
    void dataGridView1_Click(object sender, EventArgs e)
            {
                sCell = dataGridView1.SelectedCells[0].Value.ToString();
            }
    //點擊排序標題
            void dataGridView1_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
            {
                dataGridView1.SelectedCells[0].Selected = false;
                SelectRow(sCell);        }
    //選中行
    void SelectRow(string sindex)
            {
                foreach (DataGridViewRow r in dataGridView1.Rows)
                {
                    if (r.Cells[0].Value.ToString() == sindex)
                    {
                        r.Selected = true;
                        break;
                       
                    }
                }        }
    ----------------
    小弟初學,方法不好見諒啊!