I have a simple RadGrid with 2 columns. I have set AllowGenerateColumns to false but I am using the NeedData Source to populate the Grid. One column is a Text box and the other is a dropdown list. I have nor problems showing the Grid with the data and I can add new records.
Here is my ASPX code to for this Grid:
<telerik:RadGrid ID="gvOrgContacts" runat="server" AutoGenerateColumns="false" OnNeedDataSource="gvOrgContacts_NeedDataSource" AllowSorting="true" AllowPaging="false" AllowAutomaticDeletes="true" AllowFilteringByColumn="false" OnItemCreated="gvOrgContacts_ItemCreated" OnItemInserted="gvOrgContacts_ItemInserted" OnPreRender="gvOrgContacts_PreRender" OnInsertCommand="gvOrgContacts_InsertCommand" OnItemDataBound="gvOrgContacts_ItemDataBound" OnUpdateCommand="gvOrgContacts_UpdateCommand" OnDeleteCommand="gvOrgContacts_DeleteCommand" OnItemCommand="gvOrgContacts_ItemCommand" Skin="Default" Visible="false"> <HeaderStyle CssClass="GridHeader" /> <PagerStyle Mode="NextPrevNumericAndAdvanced" /> <MasterTableView AutoGenerateColumns="false" DataKeyNames="ContactID" CommandItemDisplay="Top" InsertItemPageIndexAction="ShowItemOnCurrentPage"> <Columns> <telerik:GridEditCommandColumn></telerik:GridEditCommandColumn> <telerik:GridBoundColumn DataField="ContactID" HeaderText="ContactID" ReadOnly="true" UniqueName="ContactID" AllowFiltering="false" DataType="System.Int16" DefaultInsertValue="" Exportable="false" Visible="false"> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="Contact" HeaderText="Contact" SortExpression="Contact" UniqueName="Contact"></telerik:GridBoundColumn> <telerik:GridTemplateColumn UniqueName="ContactTemplateColumn" HeaderText="Contact Type"> <ItemTemplate> <asp:Label ID="Contact" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "Contact") %>'> </asp:Label> </ItemTemplate> <EditItemTemplate> <asp:TextBox ID="txtContact" runat="server"></asp:TextBox> </EditItemTemplate> <EditItemTemplate> <asp:DropDownList ID="ddlContacts" runat="server" DataTextField="ContactType" DataValueField="ContactTypeID"></asp:DropDownList> </EditItemTemplate> </telerik:GridTemplateColumn> <telerik:GridButtonColumn ConfirmText="Delete this contact?" ConfirmDialogType="RadWindow" ConfirmTitle="Delete" ButtonType="ImageButton" ImageUrl="~/Images/filterCancel.gif" Text="Delete" CommandName="Delete" Exportable="false" /> </Columns> </MasterTableView> </telerik:RadGrid>
And Here is my Code behind
protected void gvOrgContacts_UpdateCommand(object sender, GridCommandEventArgs e) { if (e.Item is GridEditableItem && e.Item.IsInEditMode) { GridEditableItem editedItem = e.Item as GridEditableItem; string contactID = editedItem.OwnerTableView.DataKeyValues[editedItem.ItemIndex]["ContactID"].ToString(); int intContactID = Convert.ToInt16(contactID); using (BackgroundInvEntities db = new BackgroundInvEntities()) { var results = db.T_Contacts.Where(a => a.ContactID == intContactID).ToList(); DropDownList ddlContact = (DropDownList)editedItem.FindControl("ddlContacts") as DropDownList; int intContactType = Convert.ToInt32(ddlContact.SelectedValue); TextBox txtContacts = (TextBox)editedItem.FindControl("txtContact") as TextBox; string strContact = txtContacts.Text; results[0].ContactTypeID = intContactType; results[0].Contact = strContact; DbContext.SaveChanges(); gvOrgContacts.MasterTableView.ClearEditItems(); gvOrgContacts.Rebind(); } } }
I can retrieve the selected value of the DropDownList but when the code line to set the value of the strContact runs I get an unhandled exception. "JavaScript runtime error: ObjectReference not set to an instance of an object.
When I inspect the TextBox txtContacts it does not show a web control it shows as null.
Any one have any ideas as to why this web control is not being found?