关于动态绑定问题

lizh383 2004-09-28 10:49:36
winform程序,我在一个窗体动态生成两个以上的textbox,再通过代码textbox.DataBindings.Add的方法在同一个函数中绑定其数据源(绑定不是一次执行,也就是多次运行n次绑定函数来给这n个textbox进行数据绑定),可是显示的时候总是只能显示最后绑定的数据项,前面动态绑定的textbox的数据都没有显示出来,但如果重新运行程序再单独绑定又是可以显示数据的,也就是数据源中肯定是有数据的,这是怎么一回事情,帮忙分析分析
...全文
116 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
jimh 2004-09-28
  • 打赏
  • 举报
回复
你的代码呢,没代码怎么分析?
jinbingg 2004-09-28
  • 打赏
  • 举报
回复
up
lizh383 2004-09-28
  • 打赏
  • 举报
回复
自己解决了
lizh383 2004-09-28
  • 打赏
  • 举报
回复
grid[form4.cur_row,form4.cur_col]是我在主窗口中动态生成的获得焦点的textbox
/// <summary>
/// 得到已经选择的表名,添写在listbox1中
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void DataBing_Load(object sender, System.EventArgs e)
{
this.listBox2.SelectionMode=SelectionMode.One;
this.listBox1.SelectionMode=SelectionMode.One;

DataTable schemaTable=new DataTable();
string strConn = "Provider=SQLOLEDB;Data Source=D2000;Initial Catalog=cl;Trusted_Connection=Yes;Connect Timeout=11;";
conn= new OleDbConnection(strConn);
try
{
conn.Open();
schemaTable = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,
new object[] {null, null, null, "TABLE"});
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}

for(int i=0; i < schemaTable.Rows.Count; i++)
{
this.listBox1.Items.Add(schemaTable.Rows[i]["TABLE_NAME"].ToString());
}
}


/// <summary>
/// 取得对应表的所有字段
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void listBox1_SelectedIndexChanged(object sender, System.EventArgs e)
{
this.listBox2.Items.Clear();
tableName=this.listBox1.SelectedItem.ToString();
try
{
string sql = "SELECT * FROM " + tableName;
OleDbDataAdapter comm=new OleDbDataAdapter(sql, conn);
comm.Fill(form4.dataSet,tableName);
form4.tempDataSet=form4.dataSet.Clone();//取得同样的架构为后面的绑定做准备
for(int i=0; i < form4.dataSet.Tables[tableName].Columns.Count; i++)
{
this.listBox2.Items.Add(form4.dataSet.Tables[tableName].Columns[i].ToString());
}
}
catch(Exception ex1)
{
MessageBox.Show(ex1.Message);
}
finally
{
conn.Close();
}
}
//双击来实现绑定
private void listBox2_DoubleClick(object sender, System.EventArgs e)
{
string dataMember=this.listBox2.SelectedItem.ToString();
form4.grid[form4.cur_row,form4.cur_col].DataBindings.Add(new Binding("Text",form4.tempDataSet,tableName+"."+dataMember));
form4.grid[form4.cur_row,form4.cur_col].DataBing=tableName + "." + dataMember;
this.Close();
}

111,125

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧