Asked by:
Add FilteredTextBoxExtender problem

Question
-
User1510859543 posted
I am trying to add a FilteredTextBoxExtender via code in a ListView and it is not working (not throwing error either). My code is below. Am I missing something? Thanks.
Protected Sub lvSchedule_ItemDataBound(sender As Object, e As System.Web.UI.WebControls.ListViewItemEventArgs) Handles lvSchedule.ItemDataBound Dim fextender As AjaxControlToolkit.FilteredTextBoxExtender = New AjaxControlToolkit.FilteredTextBoxExtender Dim tb As TextBox = CType(lvSchedule.FindControl("txtCarbLiquid"), TextBox) fextender.FilterMode = AjaxControlToolkit.FilterModes.ValidChars fextender.ValidChars = "0123456789" fextender.TargetControlID = tb.ID lvSchedule.Controls.Add(fextender) END Sub
Thursday, January 29, 2015 2:49 PM
All replies
-
User2103319870 posted
You need to have Ajax ToolkitScriptManager prior to using filter extender. Also instead of adding the filterexteder control from code behind you can add from aspx page like given below
<asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server"> </asp:ToolkitScriptManager> <asp:ListView ID="ListView1" runat="server" GroupPlaceholderID="groupPlaceHolder1" DataSourceID="SqlDataSource1" ItemPlaceholderID="itemPlaceHolder1"> <ItemTemplate> <table border="1" width="50%"> <tr> <td style="width: 50%"> <asp:TextBox ID="txtCarbLiquid" Text='<%#Eval("AddressID") %>' runat="server"></asp:TextBox><br /> <asp:FilteredTextBoxExtender ID="FilteredTextBoxExtender1" TargetControlID="txtCarbLiquid" FilterMode="ValidChars" ValidChars="0123456789" runat="server"> </asp:FilteredTextBoxExtender> </td> <td style="width: 50%"> <asp:Label ID="LabelDOB" runat="server" CssClass="Label" Text='<%#Eval("AddressLine1") %>' /><br /> </td> </tr> </table> </ItemTemplate> <LayoutTemplate> <table> <asp:PlaceHolder runat="server" ID="groupPlaceHolder1"></asp:PlaceHolder> <table> </LayoutTemplate> <GroupTemplate> <tr> <asp:PlaceHolder runat="server" ID="itemPlaceHolder1"></asp:PlaceHolder> </tr> </GroupTemplate> </asp:ListView> <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:AdventureWorks2008R2ConnectionString %>" DataSourceMode="DataReader" SelectCommand="SELECT top 10 [AddressID], [AddressLine1], [AddressLine2] FROM Person.[Address]"> </asp:SqlDataSource>
Thursday, January 29, 2015 3:08 PM -
User1510859543 posted
I do have the ToolkitScriptManager but it is on the master page. Does that matter? I don't think I can have it on both master and content page. I need to do it in code because I am exporting the ListView into html and sending on email and it fails if I use the filter directly on the aspx page.
Thursday, January 29, 2015 3:14 PM -
User1918509225 posted
Hi dlchase,
Yes you are right ,you just can have only one TookitScriptManager in your page.
FilteredTextboxExtender is used to restrict what kind of value you can type in your textbox.
It seems that it 's not related with exporting the listview into html.
Could you explain more details on your error when you export listview into html ?
Best Regards,
Kevin Shen.
Friday, January 30, 2015 4:11 AM -
User1510859543 posted
I get the following exception error.
An unhandled exception occurred: Message: Extender control 'FilteredTextBoxExtender1' is not a registered extender control. Extender controls must be registered using RegisterExtenderControl() before calling RegisterScriptDescriptors(). Parameter name: extenderControl
It happens in code-behind where I am saving a DIV (called mainDiv) content to html for inserting into an email that goes out to a client. The error comes from the following code.
Dim sw As New StringWriter() Dim w As New HtmlTextWriter(sw) mainDiv.RenderControl(w) Dim s As String = sw.GetStringBuilder().ToString()
Friday, January 30, 2015 8:12 AM -
User1510859543 posted
Must have stumped everyone on this.
Thursday, February 5, 2015 4:44 PM