我设计了一个节目,上面想通过输入公式名称,获得该公司的信息,然后赋值给表单的TEXTBOX等控件,但是总是提示我错误。
Retrieve Button 的coding
1 protected void B_Retrieve_Click(object sender, EventArgs e)
2 {
3 SearchCorp ();
4 TB_CorpNumber.Focus ();
5
6 }
7 private void SearchCorp()
8 {
9 // 判定是否为空。
10 if ( AjaxControl.Ajax_VerifyTextBoxEmpty ( UpdatePanel1, Session["Site"].ToString (), Session["LoginUserID"].ToString (), TB_CorpName, TB_CorpName.Text, true ) )
11 return;
12
13 // 取得值给表单填充
14 string gsmc = TB_CorpName.Text.Trim();
15
16 IQueryable<Org_Corporation> company = from c in db.Org_Corporation
17 where c.CorpName == TB_CorpName.Text
18 select c ;
19
20
21 foreach ( var item in company )
22 {
23 TB_CorpName.Text = item.CorpName;
24 TB_CorpNumber.Text = item.CorpNumber;
25 TB_Suerior_CorpID.Text = item.Superior_CorpID.ToString ();
26 TB_Corp_Acronyms.Text = item.Corp_Acronyms;
27 if ( item.Status == "1" )
28 {
29 CB_Status.Checked = true;
30 }
31 else
32 {
33 CB_Status.Checked = false;
34 }
35
36 }
37
38
39
40
41 }
指定的转换无效。
说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.InvalidCastException: 指定的转换无效。
源错误:
行 108:行 109:行 110: foreach ( var item in company )行 111: {行 112: TB_CorpName.Text = item.CorpName;
|
源文件: e:\ETS\OR_Corption.aspx.cs 行: 110
堆栈跟踪:
[InvalidCastException: 指定的转换无效。] System.Data.SqlClient.SqlBuffer.get_Int32() +6345828 Read_Org_Corporation(ObjectMaterializer`1 ) +405 System.Data.Linq.SqlClient.ObjectReader`2.MoveNext() +42 OR_Corption.SearchCorp() in e:\ETS\OR_Corption.aspx.cs:110 OR_Corption.B_Retrieve_Click(Object sender, EventArgs e) in e:\ETS\OR_Corption.aspx.cs:92 System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +154 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3707 |
你在这一行:
TB_CorpName.Text = item.CorpName;
断点调试一下,看看为什么出错
另外:
1、在foreach运行前最好把 IQueryable 转换为 IEnumerable(如List)类型
2、你这里用foreach的话后面的值不是会覆盖前面的值吗
先回答问题1,我这个取出来的就是一条记录,我原来想生成一个类Org_Corporation 的对象,然后直接给textbox 控件赋值,但是也不行。所以我只能用循环了,尽管只有一条,虽然有些傻,但是好像很多例子都这样做的。
问题1。关于IQueryable &IEnumerable 区别没有搞明白,呵呵,我刚接触LINQ 所以还需要学习。
原来是字段类型的问题,我在数据库里面定义的CORPID的类型是BIGINT ,在实体类里面定义的是INT ,呵呵,原来这样是不可以的。郁闷,这个问题困扰我好几天。