Your Privacy Matters: We use our own and third-party cookies to improve your experience on our website. By continuing to use the website we understand that you accept their use. Cookie Policy
1280
Webdatagrid - Template Data field - Text box - Itemtemplate - Unable to cast object of type 'System.Web.UI.HtmlControls.HtmlGenericControl' to type 'Infragistics.Web.UI.TemplateContainer'
posted

Hi,

I have a textbox itemtemplate in my webdatagrid which needs to be associated with HtmlGenericControl. Please refer my code below.

I get an exception on this line - container.Controls.Add(divText); - Unable to cast object of type 'System.Web.UI.HtmlControls.HtmlGenericControl' to type 'Infragistics.Web.UI.TemplateContainer'.

Please suggest me.

Will be really helpful if you could provide a sample in C# code behind to build my template text box associated with HtmlGenericControl.

Awaiting your support asap.

TemplateDataField WeightChange = new TemplateDataField();
WeightChange.ItemTemplate = new CustomItemTemplate(Item,MemberWeightChange,WeightRequiredErrorText(),WeightRangeErrorText(),WeightNumberOfDecimals(),
Editable, EscapeSpecialChars(Session, OnChangeFunction));
WeightChange.Key = MemberWeightChange;
WeightChange.Header.Text = WeightText();
WeightChange.Width = Unit.Pixel(75);
if (Webdatagrid1.Columns.Count < 11)
this.Webdatagrid1.Columns.Add(WeightChange);

private class CustomItemTemplate : ITemplate
{
ListItemType templateType;
string validatorRequiredId;
string validatorRangeId;
string txtId;
string errorRequiredMessage;
string errorRangeMessage;
int iNumWeightDecimals;
bool bEditable;
string sEnableSaveCall;

public CustomItemTemplate(ListItemType type, string sColumnName,
string sWeightRequiredErrorMsg, string sWeightNotDoubleErrorMsg,
int iNumWeightDecimals, bool bEditable, string sEnableSaveCall)
{
templateType = type;
validatorRequiredId = sColumnName + "RequiredValidator";
validatorRangeId = sColumnName + "RangeValidator";
txtId = sColumnName + "Text";
errorRequiredMessage = sWeightRequiredErrorMsg;
errorRangeMessage = sWeightNotDoubleErrorMsg;
iNumWeightDecimals = iNumWeightDecimals;
bEditable = bEditable;
sEnableSaveCall = sEnableSaveCall;
}

void ITemplate.InstantiateIn(Control container)
{
switch (m_templateType)
{
case ListItemType.Item:
#region


HtmlGenericControl divText = new HtmlGenericControl();

divText.TagName = "div";
TextBox txtItem = new TextBox();
txtItem.ID = m_txtId;
txtItem.Width = Unit.Percentage(80);
txtItem.EnableViewState = false;
txtItem.Enabled = m_bEditable;
txtItem.DataBinding += new EventHandler(txtItem_DataBinding);
divText.Controls.Add(txtItem);
container.Controls.Add(divText);

HtmlGenericControl divValidator = new HtmlGenericControl();
divValidator.TagName = "div";
RequiredFieldValidator rfv = new RequiredFieldValidator();
rfv.ID = m_validatorRequiredId;
rfv.Display = ValidatorDisplay.Dynamic;
rfv.EnableViewState = false;
rfv.ErrorMessage = m_errorRequiredMessage;
rfv.SetFocusOnError = true;
divValidator.Controls.Add(rfv);
RangeValidator rv = new RangeValidator();
rv.ID = m_validatorRangeId;
rv.Display = ValidatorDisplay.Dynamic;
rv.EnableViewState = false;
rv.ErrorMessage = m_errorRangeMessage;
rv.SetFocusOnError = true;
rv.Type = ValidationDataType.Double;
divValidator.Controls.Add(rv);
container.Controls.Add(divValidator);
break;
#endregion
default:
break;
}
}

void txtItem_DataBinding(object sender, EventArgs e)
{
TextBox txt = sender as TextBox;

var item = ((TemplateContainer)((TextBox)sender).Parent);
var row = (GridRecordItem)item.Item;
var record = (GridRecord)row.Row;
var newValue = ((TextBox)sender).Text;

if (newValue != null)
{
NumberFormatInfo nfi = new NumberFormatInfo();
nfi.NumberDecimalDigits = m_iNumWeightDecimals;
nfi.NumberGroupSeparator = string.Empty;
txt.Text = Convert.ToDouble(txt.Text).ToString("N", nfi);
}
RequiredFieldValidator rfv = txt.NamingContainer.FindControl(m_validatorRequiredId) as RequiredFieldValidator;
string rfvClientId = string.Empty;
if (rfv != null)
{
rfv.ControlToValidate = txt.ID;
rfvClientId = rfv.ClientID;
}
// set the control to validate into the range validator
RangeValidator rv = txt.NamingContainer.FindControl(m_validatorRangeId) as RangeValidator;
string rvClientId = string.Empty;
if (rv != null)
{
rv.ControlToValidate = txt.ID;
rvClientId = rv.ClientID;
}
txt.Attributes.Add(OnChange,
"UpdateCompositeElementWeightOnChange('"
+ txt.NamingContainer.NamingContainer.ClientID + "', '"
+ txt.TabIndex + "', '"
+ rfvClientId + "', '"
+ rvClientId + "', '"
+ MemberItemId + "', '"
+ MemberWeightChange + "', '"
+ m_iNumWeightDecimals + "', '"
+ m_sEnableSaveCall + "');");
txt.Attributes.Add(OnClick, "return false;");
}
}

Parents
No Data
Reply Children