Hi,
I am adding controls dynamically in OnItemCreated event.
OnitemDataBound setting the value to same controls on the basis of hidden field present in same row.
This works fine.
But after button click event which is at the bottom page I am getting same value.
the problem is ,in OnItemCreated controls are getting created again.
But if i checked for already added controls its showing null.
Can you please suggest.
My code is as below.
I am adding controls dynamically in OnItemCreated event.
OnitemDataBound setting the value to same controls on the basis of hidden field present in same row.
This works fine.
But after button click event which is at the bottom page I am getting same value.
the problem is ,in OnItemCreated controls are getting created again.
But if i checked for already added controls its showing null.
Can you please suggest.
My code is as below.
protected void OnItemCreated(object sender, GridItemEventArgs e) { if (!IsPostBack) { RadGrid rg = (RadGrid)sender; SQWParameter oSQWParameter = (SQWParameter)ViewState["oParameter"]; if (e.Item is GridDataItem) { GridDataItem item = e.Item as GridDataItem; HiddenField hdnValue = (HiddenField)e.Item.FindControl("hdnId"); WebControl rwControl = GetContorlByParameter(oSQWParameter); item["Column2"].Controls.Add(rwControl); } } }private WebControl GetContorlByParameter(SQWParameter oSQWParameter) { RadTextBox txtValue = new RadTextBox(); RadNumericTextBox ntxtValue = new RadNumericTextBox(); RadComboBox cmbValue = new RadComboBox(); RadDatePicker rdpValue = new RadDatePicker(); int iControlType = 0; int iValue = 0; switch (oSQWParameter.Type) { case ParameterType.Text: switch (oSQWParameter.ValueType) { case ParameterValueType.UniqueValue: iControlType = 0; txtValue = new RadTextBox(); txtValue.ID = "rwControlValue"; txtValue.Text = oSQWParameter.DefaultValue.ToString(); txtValue.EmptyMessage = oSQWParameter.DefaultValue.ToString(); txtValue.Width = 120; break; case ParameterValueType.ValueList: iControlType = 2; cmbValue = new RadComboBox(); cmbValue.ID = "rwControlValue"; cmbValue.Width = 110; cmbValue.Items.AddRange(GetValueListItems(oSQWParameter.ValueList)); break; } break; case ParameterType.Numeric: switch (oSQWParameter.ValueType) { case ParameterValueType.UniqueValue: iControlType = 1; ntxtValue = new RadNumericTextBox(); ntxtValue.ID = "rwControlValue"; txtValue.Width = 120; ntxtValue.NumberFormat.DecimalDigits = oSQWParameter.DecimalPlaces; if (!oSQWParameter.Use1000Separator) ntxtValue.NumberFormat.GroupSeparator = ""; ntxtValue.EmptyMessage = oSQWParameter.DefaultValue.ToString(); break; case ParameterValueType.ValueList: iControlType = 2; cmbValue = new RadComboBox(); cmbValue.ID = "rwControlValue"; cmbValue.Width = 110; cmbValue.Items.AddRange(GetValueListItems(oSQWParameter.ValueList)); break; } break; case ParameterType.Date: switch (oSQWParameter.ValueType) { case ParameterValueType.UniqueValue: iControlType = 3; rdpValue = new RadDatePicker(); rdpValue.ID = "rwControlValue"; rdpValue.Width = 120; rdpValue.MinDate = new DateTime(1900, 1, 1, 12, 00, 00); rdpValue.DateInput.DateFormat = "MM/dd/yyyy"; DateTime dtValue = (DateTime)oSQWParameter.DefaultValue; rdpValue.DateInput.EmptyMessage = dtValue.ToString("MM/dd/yyyy"); break; } break; } if (iControlType == 0) return txtValue; else if (iControlType == 1) return ntxtValue; else if (iControlType == 2) return cmbValue; else return rdpValue; } protected void OnItemDataBound(object sender, GridItemEventArgs e) { if (e.Item is GridDataItem) { GridDataItem item = e.Item as GridDataItem; HiddenField hdnValue = (HiddenField)e.Item.FindControl("hdnValue"); RadTextBox rwControl = (RadTextBox)e.Item.FindControl("ntxtValue"); rwControl.Text = hdnValue.Value; } }