主题:如何将datagridview和某个table绑定在一起?
binghuoxin
[专家分:0] 发布于 2006-04-17 09:48:00
接标题:在table中更新数据时,datagridview中也能自动更新显示。
回复列表 (共8个回复)
沙发
yuhua [专家分:1730] 发布于 2006-04-17 11:03:00
刷新一下 或者重新邦定过去
板凳
binghuoxin [专家分:0] 发布于 2006-04-17 11:16:00
public partial class frmMain : Form
{
DataTable tableAddNew = new DataTable("tableAddNew
public frmMain()
{
InitializeComponent();
InitAddNewTable();
}
/// <summary>
/// 初始化添加表
/// </summary>
private void InitAddNewTable()
{
tableAddNew.Columns.Add("Country", typeof(string));
tableAddNew.Columns.Add("Department", typeof(string));
tableAddNew.Columns.Add("Assort", typeof(string));
tableAddNew.Columns.Add("Content", typeof(string));
tableAddNew.Columns.Add("Url", typeof(string));
tableAddNew.Columns.Add("LocalPath", typeof(string));
tableAddNew.Columns.Add("FileName", typeof(string));
tableAddNew.Columns.Add("UploadTime", typeof(DateTime));
tableAddNew.Columns.Add("Description", typeof(string));
}
private void frmMain_Load(object sender, EventArgs e)
{
// TODO: 这行代码将数据加载到表“urlInfoDataSet.Country”中。您可以根据需要移动或移除它。
this.countryTableAdapter.Fill(this.urlInfoDataSet.Country);
bindingSourceOfAddNewTable.DataSource = tableAddNew;
}
private void btnAdd_Click(object sender, EventArgs e)
{
string isPrepare;
string[] row = new string[8];
isPrepare = IsPrepare();
if (isPrepare != "")
{
MessageBox.Show ("请检查" + isPrepare + " 等要素是否填好?","提示",MessageBoxButtons.OK);
return;
}
row[0]=cmbBCountry.Text;
row[1]=cmbBDepartment.Text;
row[2]=txtBAssort.Text;
row[3]=txtBContent.Text;
row[4]=txtBUrl.Text;
row[5]=txtBLocalPath.Text;
row[6] = txtBFileName.Text;
row[7]=txtBDescription.Text;
//AddNewElement(row);
AddNewElementToTable(row);
bindingSourceOfAddNewTable.DataSource = tableAddNew;
}
/// <summary>
/// 将各要素添加到新建表中
/// </summary>
/// <param name="row"></param>
private void AddNewElementToTable(string[] row)
{
DataRow rowAddNew = tableAddNew.NewRow();
DateTime nowDateTime = DateTime.Now;
TimeSpan oneDay = new TimeSpan (-1,0,0,0);
rowAddNew["Country"] = row[0];
rowAddNew["Department"] = row[1];
rowAddNew["Assort"] = row[2];
rowAddNew["Content"] = row[3];
rowAddNew["Url"] = row[4];
rowAddNew["LocalPath"] = row[5];
rowAddNew["FileName"] = row[6];
rowAddNew["UploadTime"] = nowDateTime.Add(oneDay);
rowAddNew["Description"] = row[7];
}
我试过了,不行啊,datagridview一点反应都没有。datagridview是通过属性设置绑定到bindingSourceOfAddNewTable的:datagridview.DataSource=bindingSourceOfAddNewTable;
3 楼
binghuoxin [专家分:0] 发布于 2006-04-18 09:37:00
请高人帮忙解答啊!
4 楼
binghuoxin [专家分:0] 发布于 2006-04-18 18:04:00
等了一天了,都没有人过来帮忙啊!~~
5 楼
binghuoxin [专家分:0] 发布于 2006-04-19 09:35:00
55555555555555,还是没有人帮俺啊!~~~
6 楼
binghuoxin [专家分:0] 发布于 2006-04-19 10:26:00
我狂晕啊,原本是在IDE的属性页里直接把dGVAddNew.DataSource = bindingSourceOfAddNewTable的,死活不能更新;今天早上把dGVAddNew.DataSource 属性改为“无”,在frmMain_Load中添加dGVAddNew.DataSource = bindingSourceOfAddNewTable;这样居然就可以了,吐血!~~
难道直接在IDE里把datagridview和bindingSource绑定不行吗?这是否是个BUG呢?
7 楼
binghuoxin [专家分:0] 发布于 2006-04-19 11:14:00
我在想,之所以会出现datagridview无法刷新的问题,是否和绑定的顺序有关?在IDE设计器中绑定datagridview和bindingSource是否要早于在代码窗口绑定bindingSource和table?
另外,VS2005和VS2003不同,2005把窗体设计的代码单独放到以Designer.cs结尾的文件中,这个Designer.cs文件执行应该早于普通cs文件,这样datagridview和bindingSource的绑定就早于bindingSource和table的绑定,我觉得之前问题主要出现在这里。
还有个结论,不知是否正确:只要按照数据源——>绑定组件-->显示控件的顺序绑定,不用其它操作,在数据源的任何更新都能自动更新到显示控件,同样,在显示控件的更新也能自动更新到数据源。请大家指教!
8 楼
binghuoxin [专家分:0] 发布于 2006-05-10 14:22:00
为什么没有人回答呢?难道我问的太简单,大家都不屑于回答吗?
我来回复