需求是这样的 
上面是一个DataGridView,用来接收查询所得到的记录数据;
下面是一个界面,显示会员资料
当DataGridView不为空时,选择DataGridView中的记录时,下面的界面就显示该记录的详细资料;
现在可以正确做到显示,选中任意一条,就显示当前记录的详细资料;
但是点击列标题进行排序的时候出错
关键代码如下://DataGridView传值到界面
            this.dataGridView1.SelectionChanged +=new EventHandler(dataGridView1_SelectionChanged);
            
        }        void dataGridView1_SelectionChanged(object sender, EventArgs e)
        {
            string MemberID = this.dataGridView1.CurrentRow.Cells["MemberID"].Value.ToString();
            string strCommand = string.Format(
                "SELECT * FROM Member WHERE MemberID ='{0}'", MemberID);
            DataSet ds = Member.SearchMember(strCommand);
            DataRow dr = ds.Tables[0].Rows[0];
            this.txtMemberCode.Text = dr["MemberCode"].ToString();
            this.txtMemberName.Text = dr["MemberName"].ToString();
            this.txtMemberPhone.Text = dr["MemberPhone"].ToString();
            this.dateTimePickerMemberStartDate.Value = Convert.ToDateTime(dr["MemberStartDate"].ToString());
            this.txtMemberRe.Text = dr["MemberRe"].ToString();       
        }

解决方案 »

  1.   

    void dataGridView1_SelectionChanged(object sender, EventArgs e)
            {
                if(this.dataGridView1.CurrentRow.RowIndex == 0) return;
                string MemberID = this.dataGridView1.CurrentRow.Cells["MemberID"].Value.ToString();
                string strCommand = string.Format(
                    "SELECT * FROM Member WHERE MemberID ='{0}'", MemberID);
                DataSet ds = Member.SearchMember(strCommand);
                DataRow dr = ds.Tables[0].Rows[0];
                this.txtMemberCode.Text = dr["MemberCode"].ToString();
                this.txtMemberName.Text = dr["MemberName"].ToString();
                this.txtMemberPhone.Text = dr["MemberPhone"].ToString();
                this.dateTimePickerMemberStartDate.Value = Convert.ToDateTime(dr["MemberStartDate"].ToString());
                this.txtMemberRe.Text = dr["MemberRe"].ToString();       
            }
      

  2.   

    string MemberID = this.dataGridView1.CurrentRow.Cells["MemberID"].Value.ToString();.CurrentRow属性不排序可以,排序或过滤后就不正确了,应该用e参数string MemberID = this.dataGridView1.Rows[e.RowIndex].Cells["MemberID"].Value.ToString();
      

  3.   


    void dataGridView1_SelectionChanged(object sender, EventArgs e)
            {
                if(this.dataGridView1.CurrentRow.RowIndex == 0) return;
                string MemberID = this.dataGridView1.CurrentRow.Cells["MemberID"].Value.ToString();
                string strCommand = string.Format(
                    "SELECT * FROM Member WHERE MemberID ='{0}'", MemberID);
                DataSet ds = Member.SearchMember(strCommand);
                DataRow dr = ds.Tables[0].Rows[0];
                this.txtMemberCode.Text = dr["MemberCode"].ToString();
                this.txtMemberName.Text = dr["MemberName"].ToString();
                this.txtMemberPhone.Text = dr["MemberPhone"].ToString();
                this.dateTimePickerMemberStartDate.Value = Convert.ToDateTime(dr["MemberStartDate"].ToString());
                this.txtMemberRe.Text = dr["MemberRe"].ToString();       
            }