2015-12-08 54 views
0

我正在使用編輯模板中使用ASPX用戶控件的Telerik RadGrid。我試圖保存編輯過的記錄,但似乎遇到了代碼問題。我對Grideview很陌生,無法弄清楚如何實現這一點。不能將類型'object'隱式轉換爲'int'。存在明確的轉換(您是否缺少演員?)

我用作學習工具的Telerik示例使用SQL連接到數據庫,我使用數據實體,因此我不得不在代碼中進行一些翻譯。在Telerik使用這個代碼的例子中。

的DataRow [] changedRows = results.Where(R => r.SubjectId =(editedItem.OwnerTableView.DataKeyValues [editedItem:

DataRow[] changedRows = this.Employees.Select("EmployeeID = " + editedItem.OwnerTableView.DataKeyValues[editedItem.ItemIndex]["EmployeeID"]); 

這不適合我,所以我想這個代碼工作.ItemIndex] [ 「SubjectId」]));

但是我收到此錯誤消息: 不能隱式地將類型'object'轉換爲'int'。存在明確的轉換(您是否缺少演員?)

如果我嘗試使用Convert.ToInt16()將其轉換爲int,則會得到相同的錯誤消息。我相信DataRow []代表一行數據,所以爲什麼我會得到一個轉換錯誤,以及如何獲得「DataRow [] changedRows」的值?

感謝您的幫助

+2

你可能需要轉換檢索的列:解決了這個代碼的問題。 '(int)(editedItem.OwnerTableView.DataKeyValues [editedItem.ItemIndex] [「SubjectId」])'因爲它很可能是一個對象,而不是一個整數。 –

+0

我試過了,錯誤信息改爲「不能隱式地將類型'int'轉換爲'bool' – Perry

+0

請參閱下面的答案。 –

回答

0

感謝大衛L用你的意見,我說我是相當新的這一點,你讓我思考,所以我做更多的研究,發現其中SLaks指出你使用數據行與數據表,因爲我沒有做,我再次

GridEditableItem editedItem = e.Item as GridEditableItem; 
     UserControl userControl = (UserControl)e.Item.FindControl(GridEditFormItem.EditFormUserControlID); 
     string subjectid = editedItem.OwnerTableView.DataKeyValues[editedItem.ItemIndex]["SubjectId"].ToString(); 
     int intSubject = Convert.ToInt16(subjectid); 
     var results = from r in DbContext.Subjects.ToList() 
        where r.SubjectId == intSubject 
        select r; 
     List<Subject> newSubject = results.ToList(); 
     //string test = newSubject[0].Comments; 
     if (newSubject.Count != 1) 
     { 

      RadGrid1.Controls.Add(new LiteralControl("Unable to locate the Subject for updating.")); 

      e.Canceled = true; 

      return; 

     } 

感謝您的答覆

佩裏

0

您有兩個問題。一,您正在使用assignment運營商(=)而不是equality運營商(==)。

其次,在比較您的.Where()謂詞的相等性之前,您需要將您的列轉換爲整數。

DataRow[] changedRows = results.Where(r => r.SubjectId == 
    (int)(editedItem.OwnerTableView.DataKeyValues[editedItem.ItemIndex]["SubjectId"])); 
相關問題