当前位置: 代码迷 >> .NET Framework >> 关于吧dataGridView中选中的一行,添加到同一页面中另一个DataGridView中
  详细解决方案

关于吧dataGridView中选中的一行,添加到同一页面中另一个DataGridView中

热度:99   发布时间:2016-05-02 00:46:15.0
求助关于吧dataGridView中选中的一行,添加到同一页面中另一个DataGridView中
各位大哥:
  如题我有两个DataGridView dgvA和dgvB,dgvA中选中了一行,在一个添加按钮中,想把该选中行SelectRows[i]的数据完整的添加到另一个dgvB中,如何实现????
  如题上一个是完整的添加,还有一个是仅仅添加改行中的某几个单元格的数据到dgvB中 该如何做呢???
部分代码如下
C# code
 for(int i=0;i<dgvA.selectRows.Count;i++){    DataGridViewRow dgvRow=dgv.selectRows[i];    dgvB.Rows.remove(dgvRow);//如果选中行有多个这时移除不完全,比如选中了三个只移除了俩,为什么???该怎么做呢。    dgvB.Rows.Add(dgvRow);//这里添加的数据在dgvB中不显示。}



各位大哥为什么???该怎么做呢???

------解决方案--------------------
C# code
Page<asp:GridView ID="GridView1" runat="server"           AutoGenerateColumns = "false">            <Columns>                <asp:BoundField DataField = "Id" HeaderText ="ID" />                <asp:BoundField DataField = "Name" HeaderText ="Name" />                <asp:BoundField DataField ="Age" HeaderText = "Age" />                <asp:TemplateField>                    <ItemTemplate>                      <asp:Button ID="btnAdd" runat="server" Text="Add" OnClick = "btnAdd_Click"/>                    </ItemTemplate>                                    </asp:TemplateField>            </Columns>        </asp:GridView>           <asp:GridView ID="GridView2" runat="server">        </asp:GridView>Model    [Serializable]    public class Student    {        public int Id { get; set; }        public string Name { get; set; }        public int Age { get; set; }.cs        protected void btnAdd_Click(object sender, EventArgs e)        {            Button btn = sender as Button;            GridViewRow row = btn.Parent.Parent as GridViewRow;                                    if (row == null) return;                        Student s = new Student();            s.Id = int.Parse(row.Cells[0].Text);            s.Name = row.Cells[1].Text;            s.Age = int.Parse(row.Cells[2].Text);            List<Student> students = this.AddStudent;            students.Add(s);            this.GridView2.DataSource = students;            this.GridView2.DataBind();            this.AddStudent = students;        }        public List<Student> AddStudent        {            get            {                if (this.ViewState["Students"] == null) return new List<Student>();                return this.ViewState["Students"] as List<Student>;            }            set            {                this.ViewState["Students"]= value;            }        }    }
------解决方案--------------------
C# code
DataGridViewRow[] drs=new DataGridViewRow[dataGridView1.SelectedRows.Count];            dataGridView1.SelectedRows.CopyTo(drs, 0);            for (int i = 0; i < drs.Length; i++)            {                //这是完整的添加                DataGridViewRow dr = new DataGridViewRow();                dr.CreateCells(dataGridView2);                dr.CreateCells(dataGridView2);                //也可以只部分添加                //只需要改变这个的赋值项                dr.Cells[0].Value = drs[i].Cells[0].Value;                dr.Cells[1].Value = drs[i].Cells[1].Value;                dataGridView2.Rows.Add(dr);            }
------解决方案--------------------
探讨
各位大哥:
如题我有两个DataGridView dgvA和dgvB,dgvA中选中了一行,在一个添加按钮中,想把该选中行SelectRows[i]的数据完整的添加到另一个dgvB中,如何实现????
如题上一个是完整的添加,还有一个是仅仅添加改行中的某几个单元格的数据到dgvB中 该如何做呢???
部分代码如下

C# code

 for(int i=0;i<dgvA.s……

------解决方案--------------------
C# code
 object[] ob = new object[] { dgv1.CurrentRow.Cells["itemName"].Value.ToString(),                 dgv1.CurrentRow.Cells["ITEMM_MID"].Value.ToString(), "", "",                dgv1.CurrentRow.Cells["checkup_price"].Value.ToString()            };            //添加一行数据            dgv2.Rows.Add(ob);//写个数组~
------解决方案--------------------
dgvB.Rows.remove(dgvRow);
dgvB.Rows.Add(dgvRow);

这样本身不对吧。dgvRow是第一个gridview的引用,直接加到第二个对象肯定不行,而且你先remove了,再去加,应该加的是个空对象吧。建议remove之前在dgvB新建一个row,再把dgvRow深拷贝过来,再去remove第一个。
  相关解决方案