Hi, I'm using a Three Tier Architecture, and I am able to see the documents from my Oracle database. Anyway I'm having some trouble with the Insert option.
The grid loads fine and show the table content, I can click Add a New entry but when I click Insert nothing happens.
Here is my code so far:
The DAL makes the call to the DB, assigning properties through the Business Object class (below)
public List<DocsBO> InsertDocuments() { using (_connection) { _connection.Open(); using (_command = new OracleCommand("INSERT INTO PROM_DOCS (DOCID, DOCTITLE, DOCDESCRIPTION, FILENAME, FILENAMESTARTPLAY," + "TYPE, LASTEDIT, DOCVERSION, THUMBNAIL, STATUS, DISCLOSABLE, PRODUCTID, LAST_USER, LAST_EDIT, CATEGORYNAME)" + "VALUES (:DOCID, :DOCTITLE, :DOCDESCRIPTION, :FILENAME, :FILENAMESTARTPLAY, :TYPE, :LASTEDIT, :DOCVERSION, :THUMBNAIL, :STATUS," + ":DISCLOSABLE, :PRODUCTID, :LAST_USER, :LAST_EDIT, :CATEGORYNAME)", _connection)) { List<DocsBO> InsDocs = new List<DocsBO>(); using (OracleDataReader _dataReader = _command.ExecuteReader()) { while (_dataReader.Read()) { InsDocs.Add(new DocsBO()); InsDocs[InsDocs.Count - 1].Id = Convert.ToInt32(_dataReader["DOCID"]); InsDocs[InsDocs.Count - 1].Name = _dataReader["DOCTITLE"].ToString(); InsDocs[InsDocs.Count - 1].Description = _dataReader["DOCDESCRIPTION"].ToString(); InsDocs[InsDocs.Count - 1].FileName = _dataReader["FILENAME"].ToString(); InsDocs[InsDocs.Count - 1].FileNameStartPlay = _dataReader["FILENAMESTARTPLAY"].ToString(); InsDocs[InsDocs.Count - 1].Type = Convert.ToInt32(_dataReader["TYPE"]); InsDocs[InsDocs.Count - 1].LastEdit = Convert.ToDateTime(_dataReader["LASTEDIT"]); InsDocs[InsDocs.Count - 1].Version = _dataReader["DOCVERSION"].ToString(); InsDocs[InsDocs.Count - 1].Thumbnail = _dataReader["THUMBNAIL"].ToString(); InsDocs[InsDocs.Count - 1].Status = Convert.ToInt32(_dataReader["STATUS"]); InsDocs[InsDocs.Count - 1].Disclosable = Convert.ToBoolean(_dataReader["DISCLOSABLE"]); #region if DBNull PRODUCTID if (_dataReader["PRODUCTID"] == DBNull.Value) { InsDocs[InsDocs.Count - 1].ProductId = 0; } else { InsDocs[InsDocs.Count - 1].ProductId = Convert.ToInt32(_dataReader["PRODUCTID"]); } #endregion InsDocs[InsDocs.Count - 1].LastUser = _dataReader["LAST_USER"].ToString(); InsDocs[InsDocs.Count - 1].LastEdit2 = Convert.ToDateTime(_dataReader["LAST_EDIT"]); InsDocs[InsDocs.Count - 1].CategoryName = _dataReader["CATEGORYNAME"].ToString(); } } return InsDocs; } } }
The BLL takes the returning list from the DAL
public List<DocsBO> InsertDocs() { List<DocsBO> _newDocs; DocsDal NewDocs = new DocsDal(); _newDocs = NewDocs.InsertDocuments(); return _newDocs; }
The Presentation Layer containing the RadGrid takes the list and populates itself
protected void RadGrid1_NeedDataSource(object sender, Telerik.Web.UI.GridNeedDataSourceEventArgs e) { RadGrid1.DataSource = _BLL.LoadDocs(); }Here is my Grid
<telerik:RadGrid ID="RadGrid1" runat="server" OnNeedDataSource="RadGrid1_NeedDataSource" GroupPanelPosition="Top" AllowPaging="True" AllowSorting="True" AllowAutomaticDeletes="True" AllowAutomaticInserts="True" AllowAutomaticUpdates="True" AutoGenerateColumns="False"> <MasterTableView CommandItemDisplay="Top" PageSize="20"> <ItemStyle CssClass="radGridRows" /> <AlternatingItemStyle CssClass="radGridRows" /> <Columns> <telerik:GridBoundColumn DataField="Id" FilterControlAltText="Filter column column" HeaderText="Id" UniqueName="column"> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="Name" FilterControlAltText="Filter column1 column" HeaderText="Name" UniqueName="column1"> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="Description" FilterControlAltText="Filter column2 column" HeaderText="Description" UniqueName="column2"> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="FileName" FilterControlAltText="Filter column3 column" HeaderText="File Name" UniqueName="column3"> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="FileNameStartPlay" FilterControlAltText="Filter column4 column" HeaderText="FN Start Play" UniqueName="column4"> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="Type" FilterControlAltText="Filter column5 column" HeaderText="Type" UniqueName="column5"> </telerik:GridBoundColumn> <telerik:GridDateTimeColumn DataField="LastEdit" FilterControlAltText="Filter column6 column" HeaderText="Last Edit" UniqueName="column6" PickerType="DateTimePicker"> </telerik:GridDateTimeColumn> <telerik:GridBoundColumn DataField="Version" FilterControlAltText="Filter column7 column" HeaderText="Version" UniqueName="column7"> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="Thumbnail" FilterControlAltText="Filter column8 column" HeaderText="Thumbnail" UniqueName="column8"> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="Status" FilterControlAltText="Filter column9 column" HeaderText="Status" UniqueName="column9"> </telerik:GridBoundColumn> <telerik:GridCheckBoxColumn DataField="Disclosable" DataType="System.Boolean" DefaultInsertValue="false" FilterControlAltText="Filter column10 column" HeaderText="Disclosable" UniqueName="column10"> </telerik:GridCheckBoxColumn> <telerik:GridBoundColumn DataField="ProductId" FilterControlAltText="Filter column11 column" HeaderText="Product Id" UniqueName="column11" Visible="false"> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="LastUser" FilterControlAltText="Filter column12 column" HeaderText="Last User" UniqueName="column12"> </telerik:GridBoundColumn> <telerik:GridDateTimeColumn DataField="LastEdit2" FilterControlAltText="Filter column13 column" HeaderText="Last Edit" UniqueName="column13" Visible="false" PickerType="DateTimePicker"> </telerik:GridDateTimeColumn> <telerik:GridBoundColumn DataField="CategoryName" FilterControlAltText="Filter column14 column" HeaderText="Category Name" UniqueName="column14" Visible="false"> </telerik:GridBoundColumn> </Columns> </MasterTableView> </telerik:RadGrid>
And My Business Object Properties class
public class DocsBO { private int DocId; public int Id { get { return DocId; } set { DocId = value; } } private string DocName; public string Name { get { return DocName; } set { DocName = value; } } private string DocDesc; public string Description { get { return DocDesc; } set { DocDesc = value; } } private string DocFileName; public string FileName { get { return DocFileName; } set { DocFileName = value; } } private string DocFileNameStartPlay; public string FileNameStartPlay { get { return DocFileNameStartPlay; } set { DocFileNameStartPlay = value; } } private int DocType; public int Type { get { return DocType; } set { DocType = value; } } private DateTime DocLastEdit; public DateTime LastEdit { get { return DocLastEdit; } set { DocLastEdit = value; } } private string DocVersion; public string Version { get { return DocVersion; } set { DocVersion = value; } } private string DocThumbnail; public string Thumbnail { get { return DocThumbnail; } set { DocThumbnail = value; } } private int DocStatus; public int Status { get { return DocStatus; } set { DocStatus = value; } } private bool DocDisclosable; public bool Disclosable { get { return DocDisclosable; } set { DocDisclosable = value; } } private int DocProductId; public int ProductId { get { return DocProductId; } set { DocProductId = value; } } private string DocLastUser; public string LastUser { get { return DocLastUser; } set { DocLastUser = value; } } private DateTime DocLastEdit2; public DateTime LastEdit2 { get { return DocLastEdit2; } set { DocLastEdit2 = value; } } private string DocCategoryName; public string CategoryName { get { return DocCategoryName; } set { DocCategoryName = value; } } }
I also tried making a call in that way:
public List<DocsBO> InsertDocuments(){ List<DocsBO> InsertDocs = new List<DocsBO>(); using (_connection) { _connection.Open(); using (_command = new OracleCommand("INSERT INTO PROM_DOCS (DOCID, DOCTITLE, DOCDESCRIPTION, FILENAME, FILENAMESTARTPLAY," + "TYPE, LASTEDIT, DOCVERSION, THUMBNAIL, STATUS, DISCLOSABLE, PRODUCTID, LAST_USER, LAST_EDIT, CATEGORYNAME)" + "VALUES (:DOCID, :DOCTITLE, :DOCDESCRIPTION, :FILENAME, :FILENAMESTARTPLAY, :TYPE, :LASTEDIT, :DOCVERSION, :THUMBNAIL, :STATUS," + ":DISCLOSABLE, :PRODUCTID, :LAST_USER, :LAST_EDIT, :CATEGORYNAME)", _connection)) InsertDocs.Add(new DocsBO()); InsertDocs[InsertDocs.Count - 1].Id = Convert.ToInt32(_command.Parameters.Add(":DOCID")); InsertDocs[InsertDocs.Count - 1].Name = _command.Parameters.Add(":DOCTITLE").ToString(); InsertDocs[InsertDocs.Count - 1].Description = _command.Parameters.Add(":DOCDESCRIPTION").ToString(); InsertDocs[InsertDocs.Count - 1].FileName = _command.Parameters.Add(":FILENAME").ToString(); InsertDocs[InsertDocs.Count - 1].FileNameStartPlay = _command.Parameters.Add(":FILENAMESTARTPLAY").ToString(); InsertDocs[InsertDocs.Count - 1].Type = Convert.ToInt32(_command.Parameters.Add(":TYPE")); InsertDocs[InsertDocs.Count - 1].LastEdit = Convert.ToDateTime(_command.Parameters.Add(":LASTEDIT")); InsertDocs[InsertDocs.Count - 1].Version = _command.Parameters.Add(":DOCVERSION").ToString(); InsertDocs[InsertDocs.Count - 1].Thumbnail = _command.Parameters.Add(":THUMBNAIL").ToString(); InsertDocs[InsertDocs.Count - 1].Status = Convert.ToInt32(_command.Parameters.Add(":STATUS")); InsertDocs[InsertDocs.Count - 1].Disclosable = Convert.ToBoolean(_command.Parameters.Add(":DISCLOSABLE")); InsertDocs[InsertDocs.Count - 1].ProductId = Convert.ToInt32(_command.Parameters.Add(":PRODUCTID")); InsertDocs[InsertDocs.Count - 1].LastUser = _command.Parameters.Add(":LAST_USER").ToString(); InsertDocs[InsertDocs.Count - 1].LastEdit2 = Convert.ToDateTime(_command.Parameters.Add(":LAST_EDIT")); InsertDocs[InsertDocs.Count - 1].CategoryName = _command.Parameters.Add(":CATEGORYNAME").ToString(); _command.ExecuteNonQuery(); return InsertDocs; }}
Result is the same, I did an Insert command obviously
protected void RadGrid1_InsertCommand(object sender, Telerik.Web.UI.GridCommandEventArgs e) { _BLL.InsertDocs(); }
But it's still the same.
Any suggestions?