Bind AutoCompleteExtender dynamically to textbox of gridview in Asp.Net

980 Views Asked by At

I have tried to add autocomplete extender from code behind in grid view row data bound event but it is giving me error of "TargetControlId" of autocomplete extender is not found or duplicate control for autocomplete extender.

I add code of .aspx and .cs file in below lines.

In .Aspx file

<asp:GridView ID="grd1" runat="server" Width="100%" AutoGenerateColumns="False"
                            OnRowDataBound="grd1_OnRowDataBound" OnSorting="grdDocket_OnSorting"
                            GridLines="None" OnDataBound="grd1_OnDataBound" ShowHeader="true" AllowSorting="true"
                            AllowPaging="false" PageSize="20" OnPageIndexChanging="grd1_OnPageIndexChanging"
                            PagerStyle-HorizontalAlign="Center">
     <Columns>
       <asp:TemplateField HeaderText="Judges" SortExpression="Judges">
        <HeaderStyle Width="5%" HorizontalAlign="Left" />
        <ItemStyle Width="5%" HorizontalAlign="Left" />
        <HeaderTemplate>
          XYZ  
        </HeaderTemplate>
       <ItemTemplate>
         <asp:TextBox ID="txtXyz" SkinID="txtUpperCase" runat="server" Width="32px" MaxLength="60" Text='<%# Eval("Xyz") %>' />
       </ItemTemplate>
     </asp:TemplateField>
   </Columns>
 </asp:GridView>

In .cs file

protected void grdDocket_OnRowDataBound(object sender, GridViewRowEventArgs e)
        {
            try
            {
                switch (e.Row.RowType)
                {
                    case DataControlRowType.DataRow:
                        TextBox txtXyz = (TextBox)e.Row.FindControl("txtXyz");
                        var aceXyz = getAutoCompleteExtender("Xyz", txtXyz.ID);
                        e.Row.Controls.Add(aceJudge);
                }
            }
            catch (Exception ex)
            {
                TblSyExceptions.Log(ex, HttpContext.Current.ToString(), SessionWrapper.UserId);
                //this.msgBoxMain.Show(string.Format("An error was logged: {0}", ex.Message.ToString()), MessageBox.PbKMessageType.Error);
            }
        }

private AutoCompleteExtender getAutoCompleteExtender(string id, string clientId)
        {
            var ace = new AutoCompleteExtender();
            string[] splitStr = {"txt"};
            var cid = clientId.Split(splitStr,StringSplitOptions.None)[0];
            //ace.ID = cid + "ace" + id;
            ace.ID = "ace" + id;
            //ace.BehaviorID = cid + "ace" + id + "BehaviourCode";
            //ace.TargetControlID = clientId;
            ace.ServiceMethod = "SearchByAttorneyBarCodeORNameNoJQ";
            ace.ServicePath = "../WebService/SearchCharge.asmx";
            ace.MinimumPrefixLength = 2;
            ace.CompletionInterval = 100;
            ace.EnableCaching = true;
            ace.CompletionSetCount = 20;
            ace.UseContextKey = true;
            ace.ContextKey = "J";
            ace.CompletionListCssClass = "AutoExtenderList";
            ace.CompletionListItemCssClass = "AutoExtenderListItem";
            ace.CompletionListHighlightedItemCssClass = "AutoExtenderHighlightItem";
            ace.ShowOnlyCurrentWordInCompletionListItem = true;
            ace.FirstRowSelected = false;
            ace.OnClientItemSelected = "GetSelected" + id;
            ace.OnClientPopulated = "HighlithSearchTerm";
            ace.CompletionListElementID = "divAuthoCompListItemContainerFor" + id;
            return ace;
        }
0

There are 0 best solutions below