各位大哥:
如题我有两个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); }
------解决方案--------------------
------解决方案--------------------
- 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第一个。