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;
}
}