[英]How Do I Edit Database Records In A DataGridView Using LINQ to SQL?
[英]How do I edit/update records from a database using textbox?
我有问题,请您帮忙。 我的页面上有一个编辑按钮和文本框。 我想将数据库中的一条记录编辑到这些文本框中。 我编写了以下代码,当我单击“编辑”按钮时,我得到了结果。 结果加载到我的文本框中。 但是,当我第二次尝试再次运行具有相同ID的页面时,就会出现此错误“指定的转换无效”。 怎么了 我用int ID = 3; 在此示例中获得第三条记录
受保护的void Button2_Click(对象发送者,EventArgs e)
{
DataClassesDataContext cxt =新的DataClassesDataContext(); USER_TABLE aChar = cxt.USER_TABLEs.Single(c => c.ID == 3); //得到一条记录
fname2.Text = aChar.FIRST_NAME;
lname2.Text = aChar.LAST_NAME;
pob2.Text = aChar.PLACE_OF_BIRTH;
pom2.Text = aChar.PLACE_OF_MARRIAGE;
education2.Text = aChar.EDUCATION;
occupation2.Text = aChar.OCCUPATION;
pod2.Text = aChar.PLACE_OF_DEATH;
String str = aChar.DATE_OF_BIRTH.ToString();
String str1 = aChar.DATE_OF_MARRIAGE.ToString();
String str2 = aChar.DATE_OF_DEATH.ToString();
为什么在事件处理程序代码中执行if (!Page.IsPostBack)
?
我想说的是,通常只有在回发后才引发一个事件...
除了PageLoad之外,我很少看到IsPostBack用于其他任何东西。
您需要明确保存对上下文的更改
cxt.SubmitChanges();
似乎在获取对象(使用Single)时会收到指定的强制转换异常。 您可能需要检查对象模型和数据库之间的数据类型,以确保在使用字符串的数据库中对象不期望数字(反之亦然)。 另外,检查对象和数据库列的可空性。 绑定时,LINQ to SQL不支持隐式类型转换。
至于为什么它对第一个请求有效,而对第二个请求无效,为什么两个请求之间发生了什么变化? 另外,两个请求之间的上下文是否仍然有效? 当第二次请求相同的ID时,Single会缓存获取的值,并使查询管道短路,因此,使用Single时,如果上下文保持活动状态,则应该只看到一个数据库请求。 尝试使用ctx.Log = Console.Out记录您的数据库请求,或者使用SQL Profiler(如果有)进行记录。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.