vs2003中 WinForm中 dataGird控件怎样获取选择多行的索引

解决方案 »

  1.   

    //显示选中的多行,对DataGrid列进行排序后选择也适用
    private void btnShowSelectedRow_Click(object sender, System.EventArgs e)
    {
    CurrencyManager currencyManager = (CurrencyManager)this.BindingContext[this.dataGrid1.DataSource,this.dataGrid1.DataMember];
    StringBuilder sb = new StringBuilder();
    for(int i = 0;i < dataGrid1.VisibleRowCount;i++)
    {
    if(this.dataGrid1.IsSelected(i))
    {
    DataRowView drv = (DataRowView)currencyManager.List[i];
    DataRow dr = drv.Row;
    sb.AppendFormat("{0} {1} {2}\n",dr[0],dr[1],dr[2]);
    }
    }
    //打印选择数据
    MessageBox.Show(sb.ToString());
    }

    //根据DataRow [] drs 选择DataGrid中对应的行
    private void btnShowSelectedRow_Click(object sender, System.EventArgs e)
    {
    DataRow [] drs = DataTable.Select("条件");
    CurrencyManager currencyManager = (CurrencyManager)this.BindingContext[this.dataGrid1.DataSource,this.dataGrid1.Memeber];
    //for(int i = 0;i < dataGrid1.VisibleRowCount;i++)
    for(int i = 0;i < currencyManager.Count;i++)
    {
    DataRowView drv = (DataRowView)currencyManager.List[i];
    DataRow dr = drv.Row;
    if(Array.IndexOf(drs,dr) != -1)
    {
    this.dataGrid1.Select(i);
    }
    }
    }