这个 DataGridView 中不光是数据呈现,还有TextBox、ComboBox等,当向 TextBox里输入值、ComboBox选项发生改变,希望把这些值同步更新到原DataTable。
比如第一行第二列是姓名字段,页面加载时DataTable中是空字符串(即无姓名),DataGridView 上以TextBox形式呈现,当用户输入“张三”后,则把这个姓名信息同步到 DataTable中,使得在不关闭窗体前提下,再一次绑定DataTable到DataGridView 后,原来输入的姓名“张三”能出现。
求相关实现的参考。
9 个解决方案
#1
解决方案:
1. 表格的数据源来自视图或者Join两张表,假设有a.CustomerCode,b.CustomerName字段,取到数据后能准确显示名称如“张三”
2. 当在GridView中新增记录,在CustomerCode栏输入C01编号,假设带出CustomerName为“李四”,然后更新当前记录的CustomerName字段,在缓存的的数据中也能显示
3. 保存数据后,重新查询,进入步驟1
1. 表格的数据源来自视图或者Join两张表,假设有a.CustomerCode,b.CustomerName字段,取到数据后能准确显示名称如“张三”
2. 当在GridView中新增记录,在CustomerCode栏输入C01编号,假设带出CustomerName为“李四”,然后更新当前记录的CustomerName字段,在缓存的的数据中也能显示
3. 保存数据后,重新查询,进入步驟1
#2
如果用到第三方控件,太简单了。
参考这两篇文章吧,小菜鸟:
开发应用-RepositoryItemlookupEdit显示名称
http://www.csframework.com/archive/1/arc-1-20110327-1242.htm
表格内显示多表关联数据解决方案(Join,View,lookup)
http://www.csframework.com/archive/1/arc-1-20110613-1594.htm
参考这两篇文章吧,小菜鸟:
开发应用-RepositoryItemlookupEdit显示名称
http://www.csframework.com/archive/1/arc-1-20110327-1242.htm
表格内显示多表关联数据解决方案(Join,View,lookup)
http://www.csframework.com/archive/1/arc-1-20110613-1594.htm
#3
#4
您好,我描述的所有操作,皆不向数据库存储。 当向DataGridView 内的TextBox输入一个“张”字时,立刻将这个信息同步到原 DataTable。
#5
在 rowchange 事件里面做更新
如果 row发生
如果 row发生
private void UpdateGridInfo(GridViewRowInfo currentRow) { if (currentRow == null) { return; } this.radGridView1.CloseEditor(); currentRow.Cells["ProductName"].Value = this.radTextBoxProductName.Text; currentRow.Cells["Manufacturer"].Value = this.radTextBoxManufacturer.Text; currentRow.Cells["Lining"].Value = this.radTextBoxMaterial.Text; currentRow.Cells["Dimensions"].Value = this.radTextBoxDimension.Text; if (this.radComboBox1.SelectedIndex != -1) { currentRow.Cells["SalesRepresentative"].Value = ((RadComboBoxItem)this.radComboBox1.SelectedItem).Text; } GridViewNewRowInfo newRowInfo = currentRow as GridViewNewRowInfo; if (newRowInfo != null) { currentRow.InvalidateRow(); } else { ((IEditableObject)this.radGridView1.CurrentRow.DataBoundItem).EndEdit(); } }
#6
private void UpdateGridInfo(GridViewRowInfo currentRow)
{
if (currentRow == null)
{ return; }
this.radGridView1.CloseEditor();
currentRow.Cells["ProductName"].Value = this.radTextBoxProductName.Text;
currentRow.Cells["Manufacturer"].Value = this.radTextBoxManufacturer.Text;
urrentRow.Cells["Lining"].Value = this.radTextBoxMaterial.Text;
currentRow.Cells["Dimensions"].Value = this.radTextBoxDimension.Text;
if (this.radComboBox1.SelectedIndex != -1)
{
currentRow.Cells["SalesRepresentative"].Value = ((RadComboBoxItem)this.radComboBox1.SelectedItem).Text;
}
GridViewNewRowInfo newRowInfo = currentRow as GridViewNewRowInfo;
if (newRowInfo != null)
{ currentRow.InvalidateRow(); }
else {
((IEditableObject)this.radGridView1.CurrentRow.DataBoundItem).EndEdit();
}
}
#7
这是 telerik 里面的radgridview 实例一部分
#8
帮顶! 求分。
#9
用BindingSource实现双向绑定就行了。
比如:txtName.DataBindings.Add("Text", 数据源, "列名");
http://blog.csdn.net/fangxinggood/article/details/6329840
比如:txtName.DataBindings.Add("Text", 数据源, "列名");
http://blog.csdn.net/fangxinggood/article/details/6329840
#1
解决方案:
1. 表格的数据源来自视图或者Join两张表,假设有a.CustomerCode,b.CustomerName字段,取到数据后能准确显示名称如“张三”
2. 当在GridView中新增记录,在CustomerCode栏输入C01编号,假设带出CustomerName为“李四”,然后更新当前记录的CustomerName字段,在缓存的的数据中也能显示
3. 保存数据后,重新查询,进入步驟1
1. 表格的数据源来自视图或者Join两张表,假设有a.CustomerCode,b.CustomerName字段,取到数据后能准确显示名称如“张三”
2. 当在GridView中新增记录,在CustomerCode栏输入C01编号,假设带出CustomerName为“李四”,然后更新当前记录的CustomerName字段,在缓存的的数据中也能显示
3. 保存数据后,重新查询,进入步驟1
#2
如果用到第三方控件,太简单了。
参考这两篇文章吧,小菜鸟:
开发应用-RepositoryItemlookupEdit显示名称
http://www.csframework.com/archive/1/arc-1-20110327-1242.htm
表格内显示多表关联数据解决方案(Join,View,lookup)
http://www.csframework.com/archive/1/arc-1-20110613-1594.htm
参考这两篇文章吧,小菜鸟:
开发应用-RepositoryItemlookupEdit显示名称
http://www.csframework.com/archive/1/arc-1-20110327-1242.htm
表格内显示多表关联数据解决方案(Join,View,lookup)
http://www.csframework.com/archive/1/arc-1-20110613-1594.htm
#3
#4
您好,我描述的所有操作,皆不向数据库存储。 当向DataGridView 内的TextBox输入一个“张”字时,立刻将这个信息同步到原 DataTable。
#5
在 rowchange 事件里面做更新
如果 row发生
如果 row发生
private void UpdateGridInfo(GridViewRowInfo currentRow) { if (currentRow == null) { return; } this.radGridView1.CloseEditor(); currentRow.Cells["ProductName"].Value = this.radTextBoxProductName.Text; currentRow.Cells["Manufacturer"].Value = this.radTextBoxManufacturer.Text; currentRow.Cells["Lining"].Value = this.radTextBoxMaterial.Text; currentRow.Cells["Dimensions"].Value = this.radTextBoxDimension.Text; if (this.radComboBox1.SelectedIndex != -1) { currentRow.Cells["SalesRepresentative"].Value = ((RadComboBoxItem)this.radComboBox1.SelectedItem).Text; } GridViewNewRowInfo newRowInfo = currentRow as GridViewNewRowInfo; if (newRowInfo != null) { currentRow.InvalidateRow(); } else { ((IEditableObject)this.radGridView1.CurrentRow.DataBoundItem).EndEdit(); } }
#6
private void UpdateGridInfo(GridViewRowInfo currentRow)
{
if (currentRow == null)
{ return; }
this.radGridView1.CloseEditor();
currentRow.Cells["ProductName"].Value = this.radTextBoxProductName.Text;
currentRow.Cells["Manufacturer"].Value = this.radTextBoxManufacturer.Text;
urrentRow.Cells["Lining"].Value = this.radTextBoxMaterial.Text;
currentRow.Cells["Dimensions"].Value = this.radTextBoxDimension.Text;
if (this.radComboBox1.SelectedIndex != -1)
{
currentRow.Cells["SalesRepresentative"].Value = ((RadComboBoxItem)this.radComboBox1.SelectedItem).Text;
}
GridViewNewRowInfo newRowInfo = currentRow as GridViewNewRowInfo;
if (newRowInfo != null)
{ currentRow.InvalidateRow(); }
else {
((IEditableObject)this.radGridView1.CurrentRow.DataBoundItem).EndEdit();
}
}
#7
这是 telerik 里面的radgridview 实例一部分
#8
帮顶! 求分。
#9
用BindingSource实现双向绑定就行了。
比如:txtName.DataBindings.Add("Text", 数据源, "列名");
http://blog.csdn.net/fangxinggood/article/details/6329840
比如:txtName.DataBindings.Add("Text", 数据源, "列名");
http://blog.csdn.net/fangxinggood/article/details/6329840