十万火急,DataBinding 无法在列表中找到适合所有绑定的行
表结构 [dbo].[student]([stuId] [varchar](20) COLLATE Chinese_PRC_CI_AS NOT NULL,
[stuName] [varchar](20) COLLATE Chinese_PRC_CI_AS NOT NULL,
[stuSex] [char](20) COLLATE Chinese_PRC_CI_AS NOT NULL,
[classId] [varchar](20) COLLATE Chinese_PRC_CI_AS NOT NULL,
[className] [varchar](20) COLLATE Chinese_PRC_CI_AS NOT NULL,
[telphone] [varchar](20) COLLATE Chinese_PRC_CI_AS NOT NULL,
[stuAddress] [varchar](30) COLLATE Chinese_PRC_CI_AS NOT NULL,
[birth] [datetime] NOT NULL,
[classTime] [datetime] NOT NULL,
[stuPwd] [varchar](20) COLLATE Chinese_PRC_CI_AS NOT NULL,
[mode] [bit] NOT NULL CONSTRAINT [DF_student_mode] DEFAULT ((0)),
-----------------------------------------------------------------------------------------------
更新的SQL语句:
update student set
stuName=@stuName,
stuSex=@stuSex,
classId=@classId,
className=@className,
telphone=@telphone,
stuAddress=@stuAddress,
birth=@birth
where stuId=@stuId
----------------------------------------------------------------------------------------
数据绑定到DataGrid的部分代码,包括查询的:
private void MyData()
{
try
{
string strSql = String.Empty;
DataBase.DB db = new DataBase.DB();
SqlConnection sqlConn = db.GetSqlCon();
if (sqlConn.State.ToString() == "Closed")
{
sqlConn.Open();
}
strSql = "select stuId as 学号,stuName as 姓名,stuSex as 性别,classId as 班级代码,className as 班级名称,"
+ "telphone as 电话,stuAddress as 地址,birth as 出生日期,classTime as 入学时间 ,stuPwd as 密码 from student order by stuId asc";
SqlDataAdapter da = new SqlDataAdapter(strSql, sqlConn);
DataSet ds = new DataSet();
da.Fill(ds, "student");
if (sqlConn.State.ToString() == "Open")
{
sqlConn.Close();
}
dstData = ds;
MyRun();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
/// <summary>
/// 从内存中检索数据
/// </summary>
private void MyRun()
{
try
{
if (dstData != null)
{
DataView dvStudent=dstData.Tables["student"].DefaultView;
DataTable dtStudent=dvStudent.ToTable();
DataView dv = dtStudent.DefaultView;
StringBuilder sb = new StringBuilder();
sb.Append("1=1 ");
if (!string.IsNullOrEmpty(txtStuId.Text.Trim()))
{
sb.Append(string.Format("and 学号 like '%{0}%'", txtStuId.Text.Trim()));
}
if (!string.IsNullOrEmpty(txtStuName.Text.Trim()))
{
sb.Append(string.Format("and 姓名 like '%{0}%'", txtStuName.Text.Trim()));
}
if (ckbSex.Checked)
{
sb.Append(string.Format("and 性别='{0}'", cmbSex.SelectedValue));
}
if (!string.IsNullOrEmpty(txtClassName.Text.Trim()))
{
sb.Append(string.Format("and 班级名称 like '%{0}%'", txtClassName.Text.Trim()));
}
dv.RowFilter = sb.ToString();
bdsData.DataSource = dv.ToTable();
dgvStudent.DataSource = bdsData;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
---------------------------------------------------
更新时数据绑定到控件的代码:
/// <summary>
/// 初始化控件
/// </summary>
/// <param name="bds">传递的参数</param>
private void MyData(BindingSource bds)
{
try
{
if (mode.Equals(2))
{
txtStuId.Text = ((DataRowView)(bdsData.Current))["学号"].ToString();
txtStuName.DataBindings.Add("Text", bdsData, "姓名");
cmbSex.DataBindings.Add("SelectedValue", bdsData, "性别");
txtClassId.DataBindings.Add("Text", bdsData, "班级代码");
txtClassName.DataBindings.Add("Text", bdsData, "班级名称");
txtTelphone.DataBindings.Add("Text", bdsData, "电话");
txtAddress.DataBindings.Add("Text", bdsData, "地址");
dtpBirth.DataBindings.Add("Value", bdsData, "出生日期");
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
---------------------------------------------------
以上就是我的关键代码,经过无数次的调试检查也没发现问题,更新能够正常更新,但是更新完以后 重新绑定数据时就出现异常“DataBinding 无法在列表中找到适合所有绑定的行”,有高手能够解决这个问题么,谢谢了,弄了很久都没有找到是什么原因 --------------------编程问答-------------------- 因为你表结构变了,你看看表结构是不是有变化
或者就是查出空记录了。
修改属性:AllowUserToAddRows为FALSE 可能有空记录出现 --------------------编程问答-------------------- 空行问题,参考http://www.5jsy.com/Article/15.htm --------------------编程问答-------------------- 你的问题是怎么解决的,我的也出现了类似的问题,敢问兄弟如何搞啊 --------------------编程问答-------------------- 你的问题是怎么解决的,我的也出现了类似的问题,敢问兄弟如何搞啊
补充:.NET技术 , C#