Hi,
I have a problem with RadData Grid.
I am using InPlace edit/insetrt/delete in my grid with the help of following url
http://www.telerik.com/help/aspnet/grid/grdinsertingvaluesinplaceandeditforms.html
My scenario is am Insert/Update/Delete data within radgrid not in database with Inplace technology that mean DataSource is local DataTable and and actual Database reflect with all header & Details(RadGrid) Save.
My problem is if I run my code with the break point in NeedDataSource event it is working fine and run without breakpoint it will gives an error like :
Microsoft JScript runtime error: Unable to get value of the property 'removeChild': object is null or undefined.
My scenario like user never save data if radgrid is in Edit mode (Grid row with textboxes). He have to finished the radgrid editing.
And my problem arising from hear if I clicks save button without complete radgrid editing and user try to click Insert that error occurred.
My Code is :
private DataTable GridSource
{
get
{
Object obj = this.ViewState["_gds"];
if (obj != null)
{
return (DataTable)obj;
}
else
{
DataTable dtTable = null;
try
{
XtraTechnician.DAL.ServiceRecommendationMaterial serviceRecommendationMaterial = new XtraTechnician.DAL.ServiceRecommendationMaterial();
string connectionString = ConfigurationManager.ConnectionStrings["xtramec_dbConnectionString"].ToString();
SqlConnection connection = new SqlConnection(connectionString);
if (Request.QueryString["RecoId"] != null && Request.QueryString["RecoId"].ToString().Trim() != string.Empty && Request.QueryString["RecoId"] != "N/A")
{
serviceRecommendationMaterial.RecommendationId = Convert.ToInt32(Request.QueryString["RecoId"]);
}
dtTable = serviceRecommendationMaterial.GetServiceRecommendationMaterialByRecommendationId(connection);
}
catch (Exception ex)
{
}
this.ViewState["_gds"] = dtTable;
return dtTable;
}
}
}
protected void rgMaterials_NeedDataSource(object sender, GridNeedDataSourceEventArgs e)
{
rgMaterials.DataSource = this.GridSource;
}
protected void rgMaterials_InsertCommand(object sender, GridCommandEventArgs e)
{
try
{
GridEditableItem editedItem = e.Item as GridEditableItem;
DataTable materialTable = this.GridSource;
DataRow newRow = materialTable.NewRow();
//As this example demonstrates only in-memory editing, a new primary key value should be generated
//This should not be applied when updating directly the database
DataRow[] allValues = materialTable.Select("", "RecommendationId", DataViewRowState.CurrentRows);
if (allValues.Length > 0)
{
newRow["RecommendationId"] = (int)allValues[allValues.Length - 1]["RecommendationId"] + 1;
}
else
{
newRow["RecommendationId"] = 1; //the table is empty;
}
//Set new values
System.Collections.Hashtable newValues = new System.Collections.Hashtable();
//The GridTableView will fill the values from all editable columns in the hash
e.Item.OwnerTableView.ExtractValuesFromItem(newValues, editedItem);
try
{
foreach (System.Collections.DictionaryEntry entry in newValues)
{
newRow[(string)entry.Key] = entry.Value;
}
}
catch (Exception ex)
{
e.Canceled = true;
}
materialTable.Rows.Add(newRow);
//Code for updating the database ca go here...
e.Canceled = true;
rgMaterials.MasterTableView.IsItemInserted = false;
Session["IsMaterial"] = true;
rgMaterials.DataSource = null;
rgMaterials.Rebind();
}
catch (Exception)
{
Session["IsMaterial"] = false;
return;
}
}
protected void btnSave_Click(object sender, EventArgs e)
{
if (Session["IsMaterial"] != null)
{
if (Convert.ToBoolean(Session["IsMaterial"]) == true)
{
int iRecommendation = 0;
if (Request.QueryString["RecoId"].ToString().Trim() == string.Empty || Request.QueryString["RecoId"].ToString().Trim() == " " || Request.QueryString["RecoId"].ToString().Trim() == "N/A")
{
try
{
XtraTechnician.DAL.ServiceRecommendation serviceRecommendation = new XtraTechnician.DAL.ServiceRecommendation();
string connectionString = ConfigurationManager.ConnectionStrings["xtramec_dbConnectionString"].ToString();
SqlConnection connection = new SqlConnection(connectionString);
if (Request.QueryString["wo"] != null)
{
serviceRecommendation.WorkOrderId = lblWorkOrderValue.Text;
}
if (Request.QueryString["tag"] != null)
{
serviceRecommendation.EquipmentId = lblTagValue.Text;
}
if (Session["SESSION_CUSTOMER_ID"] != null)
{
serviceRecommendation.TechnicianUserId = Session["SESSION_CUSTOMER_ID"].ToString();
}
serviceRecommendation.Date = Convert.ToDateTime(txtDate.SelectedDate);
if (rbResponsibilityXtra.Checked)
{
serviceRecommendation.Responsibility = "x";
}
else if (rbResponsibilityCustomer.Checked)
{
serviceRecommendation.Responsibility = "c";
}
if (ddlStatus.SelectedIndex > -1)
{
if (ddlStatus.SelectedValue == "0")
{
serviceRecommendation.Status = "A";
}
else if (ddlStatus.SelectedValue == "1")
{
serviceRecommendation.Status = "I";
}
}
if (txtMachanic.Text != string.Empty)
{
serviceRecommendation.MechanicHours = Convert.ToDecimal(txtMachanic.Text);
}
else
{
serviceRecommendation.MechanicHours = Convert.ToDecimal(0);
}
if (txtApprentice.Text != string.Empty)
{
serviceRecommendation.ApprenticeHours = Convert.ToDecimal(txtApprentice.Text);
}
else
{
serviceRecommendation.ApprenticeHours = Convert.ToDecimal(0);
}
if (txtOvertime.Text != string.Empty)
{
serviceRecommendation.OvertimeHours = Convert.ToDecimal(txtOvertime.Text);
}
else
{
serviceRecommendation.OvertimeHours = Convert.ToDecimal(0);
}
serviceRecommendation.Comments = txtComments.Text;
serviceRecommendation.QuoteId = Convert.ToInt32(0);
iRecommendation = serviceRecommendation.InsertServiceRecommendationOnSave(connection);
lblRecommendationValue.Text = iRecommendation.ToString();
}
catch (Exception ex)
{
return;
}
}
else
{
lblRecommendationValue.Text = Request.QueryString["RecoId"].ToString();
iRecommendation = Convert.ToInt32(Request.QueryString["RecoId"]);
try
{
XtraTechnician.DAL.ServiceRecommendation serviceRecommendation = new XtraTechnician.DAL.ServiceRecommendation();
string connectionString = ConfigurationManager.ConnectionStrings["xtramec_dbConnectionString"].ToString();
SqlConnection connection = new SqlConnection(connectionString);
serviceRecommendation.RecommendationId = iRecommendation;
if (Request.QueryString["wo"] != null)
{
serviceRecommendation.WorkOrderId = lblWorkOrderValue.Text;
}
if (Request.QueryString["tag"] != null)
{
serviceRecommendation.EquipmentId = lblTagValue.Text;
}
if (Session["SESSION_CUSTOMER_ID"] != null)
{
serviceRecommendation.TechnicianUserId = Session["SESSION_CUSTOMER_ID"].ToString();
}
serviceRecommendation.Date = Convert.ToDateTime(txtDate.SelectedDate);
if (rbResponsibilityXtra.Checked)
{
serviceRecommendation.Responsibility = "x";
}
else if (rbResponsibilityCustomer.Checked)
{
serviceRecommendation.Responsibility = "c";
}
if (ddlStatus.SelectedIndex > -1)
{
if (ddlStatus.SelectedValue == "0")
{
serviceRecommendation.Status = "A";
}
else if (ddlStatus.SelectedValue == "1")
{
serviceRecommendation.Status = "I";
}
}
if (txtMachanic.Text != string.Empty)
{
serviceRecommendation.MechanicHours = Convert.ToDecimal(txtMachanic.Text);
}
else
{
serviceRecommendation.MechanicHours = Convert.ToDecimal(0);
}
if (txtApprentice.Text != string.Empty)
{
serviceRecommendation.ApprenticeHours = Convert.ToDecimal(txtApprentice.Text);
}
else
{
serviceRecommendation.ApprenticeHours = Convert.ToDecimal(0);
}
if (txtOvertime.Text != string.Empty)
{
serviceRecommendation.OvertimeHours = Convert.ToDecimal(txtOvertime.Text);
}
else
{
serviceRecommendation.OvertimeHours = Convert.ToDecimal(0);
}
serviceRecommendation.Comments = txtComments.Text;
serviceRecommendation.QuoteId = Convert.ToInt32(0);
serviceRecommendation.UpdateRecommendationByRecommendationId(connection);
}
catch (Exception ex)
{
return;
}
}
if (iRecommendation > 0)
{
try
{
XtraTechnician.DAL.ServiceRecommendationMaterial serviceRecommendationMaterial = new XtraTechnician.DAL.ServiceRecommendationMaterial();
string connectionString = ConfigurationManager.ConnectionStrings["xtramec_dbConnectionString"].ToString();
SqlConnection connection = new SqlConnection(connectionString);
serviceRecommendationMaterial.RecommendationId = iRecommendation;
serviceRecommendationMaterial.DeleteByRecommendationId(connection);
}
catch (Exception)
{
return;
}
try
{
foreach (GridDataItem item in rgMaterials.MasterTableView.Items)
{
XtraTechnician.DAL.ServiceRecommendationMaterial serviceRecommendationMaterial = new XtraTechnician.DAL.ServiceRecommendationMaterial();
string connectionString = ConfigurationManager.ConnectionStrings["xtramec_dbConnectionString"].ToString();
SqlConnection connection = new SqlConnection(connectionString);
serviceRecommendationMaterial.RecommendationId = iRecommendation;
serviceRecommendationMaterial.PartNumber = item["PartNumber"].Text;
serviceRecommendationMaterial.Comment = item["Comment"].Text;
serviceRecommendationMaterial.Price = Convert.ToDecimal(((Label)item["Price"].FindControl("lblPrice")).Text.Remove(0, 1)); //Convert.ToDecimal(item["Price"].Text); //Convert.ToDecimal(item["TemplateColumn"]);
//(TextBox)item["Name"].FindControl("TextBox1");
serviceRecommendationMaterial.InsertServiceRecommendationMaterial(connection);
}
}
catch (Exception ex)
{
return;
}
}
try
{
XtraTechnician.DAL.ServiceOrderDetail serviceOrderDetail = new XtraTechnician.DAL.ServiceOrderDetail();
string connectionString = ConfigurationManager.ConnectionStrings["xtramec_dbConnectionString"].ToString();
SqlConnection connection = new SqlConnection(connectionString);
if (Request.QueryString["wo"] != null)
{
serviceOrderDetail.WorkOrderId = Request.QueryString["wo"].ToString();
}
if (Request.QueryString["tag"] != null)
{
serviceOrderDetail.EquipmentId = Request.QueryString["tag"].ToString();
}
if (lblRecommendationValue.Text != string.Empty)
{
serviceOrderDetail.RecommendationId = Convert.ToInt32(lblRecommendationValue.Text);
}
serviceOrderDetail.UpdateServiceOrderDetailRecommendationIdByEquipmentIdWorkOrderId(connection);
}
catch (Exception ex)
{
return;
}
if (Request.QueryString["wo"] != null && Request.QueryString["tag"] != null)
{
if (Request.QueryString["ref"] != null)
{
if (Request.QueryString["ref"].ToString() == "em")
{
Response.Redirect("EquipmentMaintenance.aspx?tag=" + Request.QueryString["tag"].ToString() + "&wo=" + Request.QueryString["wo"].ToString() + "");
}
else if (Request.QueryString["ref"].ToString() == "woe")
{
Response.Redirect("WorkOrderEquipment.aspx?wo=" + Request.QueryString["wo"].ToString() + "");
}
}
}
}
else
{
RadWindowManager1.RadAlert("Finish material job before recommendation data save!", 400, 120, "XtraTechnician Alert", "");
}
}
}
protected void rgMaterials_ItemCommand(object sender, Telerik.Web.UI.GridCommandEventArgs e)
{
switch (e.CommandName)
{
case "Select":
Session["SESSION_WORKORDER"] = e.Item.Cells[2].Text.ToString();
Session["SESSION_CUSTOMERNAME"] = e.Item.Cells[10].Text.ToString();
Session["SESSION_BUILDINGNAME"] = e.Item.Cells[7].Text.ToString() + "-" + e.Item.Cells[11].Text.ToString();
Response.Redirect("WorkOrderEquipment.aspx");
break;
case RadGrid.InitInsertCommandName:
Session["IsMaterial"] = false;
break;
case RadGrid.EditCommandName:
Session["IsMaterial"] = false;
break;
}
}
I am sending screen shots also.