Hello
I've LinkButton in my RadComboBox ItemTemplate with CommandName OnCommand event and Command Argument for delete item if user clicking.
ComboBox populating with SqlDataSource.
When trying to click second item in ComboBox page postabacking but doesnt raise onclick or even oncommand event.
If clicking first item in ComboBox raising both of events but command argument is second items command argument.
Where is the mistake?
Thanks is advance.
6 Answers, 1 is accepted
Can you try to register LinkButtton as a AsyncPostBackControl:
​
<telerik:RadComboBox runat="server" ID="combo" OnItemDataBound="combo_ItemDataBound" DataSourceID="sdsProducts" DataTextField="ProductName" DataValueField="ProductID"> <ItemTemplate> <asp:LinkButton runat="server" CommandName="Create" Text='<%# Eval("ProductName") %>' ID="LinkBtn" OnClick="LinkBtn_Click"></asp:LinkButton> </ItemTemplate> </telerik:RadComboBox> <asp:SqlDataSource runat="server" ID="sdsProducts" ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>" SelectCommand="SELECT [ProductID], [ProductName] FROM [Alphabetical list of products]"></asp:SqlDataSource>protected void combo_ItemDataBound(object sender, RadComboBoxItemEventArgs e) { LinkButton lb = e.Item.FindControl("LinkBtn") as LinkButton; ScriptManager.GetCurrent(this).RegisterAsyncPostBackControl(lb); } protected void LinkBtn_Click(object sender, EventArgs e) { }Regards,
Hristo Valyavicharski
Telerik
Than you for reply!
Added yor code to my itemdatabound but did not work.
<telerik:RadComboBox runat="server" ID="RadComboBoxDeliveryAdresses"Width="300px" DropDownWidth="300px" DropDownHeight="300px" HighlightTemplatedItems="true" DataValueField="AdressId" DataTextField="AdressName" OnItemsRequested="RadComboBoxDeliveryAdresses_ItemsRequested" OnItemDataBound="RadComboBoxAdresses_ItemDataBound"> <DefaultItem Text="Lütfen bir Teslimat adresi seçin." CssClass="rcbItem" /> <ItemTemplate> <table border="1" cellspacing="0" cellpadding="0" style="border-collapse: collapse; border: none"> <tbody> <tr> <td width="170" valign="top" style="width: 127.2pt; padding: 0cm 5.4pt 0cm 5.4pt"> <asp:Label runat="server" ID="LabelAdressName" Text="Adres Tanımı"></asp:Label> </td> <td width="142" valign="top" style="width: 106.3pt; border-left: none; padding: 0cm 5.4pt 0cm 5.4pt"> <asp:Label runat="server" ID="LabelAdressNameData" Text='<%# DataBinder.Eval(Container.DataItem, "AdressName")%>'></asp:Label> </td> <td width="38" rowspan="11" valign="middle" style="width: 1.0cm; border-left: none; padding: 0cm 5.4pt 0cm 5.4pt"> <asp:LinkButton ID="LinkButtonDeleteDeliveryAdress" runat="server" CausesValidation="false" ForeColor="navy" Text='<%# Eval("AdressId") %>' CommandArgument='<%# Eval("AdressId") %>' CommandName="Delete" OnCommand="LinkButtonDelete_Command" ></asp:LinkButton> </td> </tr> <tr> <td width="170" valign="top" style="width: 127.2pt; border-top: none; padding: 0cm 5.4pt 0cm 5.4pt"> <asp:Label runat="server" ID="LabelInVoiceType" Text="Fatura Tipi"></asp:Label> </td> <td width="142" valign="top" style="width: 106.3pt; border-top: none; border-left: none; padding: 0cm 5.4pt 0cm 5.4pt"> <asp:Label runat="server" ID="LabelInvoiceTypeData" Text='<%# DataBinder.Eval(Container.DataItem, "InvoiceType") %> '></asp:Label> </td> </tr> <tr> <td width="170" valign="top" style="width: 127.2pt; border-top: none; padding: 0cm 5.4pt 0cm 5.4pt"> <asp:Label runat="server" ID="LabelContact" Text="İlgili"></asp:Label> </td> <td width="142" valign="top" style="width: 106.3pt; border-top: none; border-left: none; padding: 0cm 5.4pt 0cm 5.4pt"> <asp:Label runat="server" ID="LabelContactNameData" Text='<%# DataBinder.Eval(Container.DataItem, "ContactName")%>'> </asp:Label> <asp:Label runat="server" ID="LabelContactSurNameData" Text='<%# DataBinder.Eval(Container.DataItem, "ContactSurName")%>'></asp:Label> </td> </tr> <tr> <td width="170" valign="top" style="width: 127.2pt; border-top: none; padding: 0cm 5.4pt 0cm 5.4pt"> <asp:Label runat="server" ID="LabelContactNumber" Text="İletişimNo"></asp:Label> </td> <td width="142" valign="top" style="width: 106.3pt; border-top: none; border-left: none; padding: 0cm 5.4pt 0cm 5.4pt"> <asp:Label runat="server" ID="LabelContactNumberData" Text='<%# DataBinder.Eval(Container.DataItem, "ContactNumber")%>'></asp:Label> </td> </tr> <tr> <td width="170" valign="top" style="width: 127.2pt; border-top: none; padding: 0cm 5.4pt 0cm 5.4pt"> <asp:Label runat="server" ID="LabelCity" Text="Şehir"></asp:Label> </td> <td width="142" valign="top" style="width: 106.3pt; border-top: none; border-left: none; padding: 0cm 5.4pt 0cm 5.4pt"> <asp:Label runat="server" ID="LabelCityData" Text='<%# DataBinder.Eval(Container.DataItem, "City")%>'></asp:Label> </td> </tr> <tr> <td width="170" valign="top" style="width: 127.2pt; border-top: none; padding: 0cm 5.4pt 0cm 5.4pt"> <asp:Label runat="server" ID="LabelDistrict" Text="İlçe"></asp:Label> </td> <td width="142" valign="top" style="width: 106.3pt; border-top: none; border-left: none; padding: 0cm 5.4pt 0cm 5.4pt"> <asp:Label runat="server" ID="LabelDistrictData" Text='<%# DataBinder.Eval(Container.DataItem, "District")%>'></asp:Label> </td> </tr> <tr> <td width="170" valign="top" style="width: 127.2pt; border-top: none; padding: 0cm 5.4pt 0cm 5.4pt"> <asp:Label runat="server" ID="LabelPart" Text="Mahalle"></asp:Label> </td> <td width="142" valign="top" style="width: 106.3pt; border-top: none; border-left: none; padding: 0cm 5.4pt 0cm 5.4pt"> <asp:Label runat="server" ID="LabelPartData" Text='<%# DataBinder.Eval(Container.DataItem, "Part")%>'></asp:Label> </td> </tr> <tr> <td width="170" valign="top" style="width: 127.2pt; border-top: none; padding: 0cm 5.4pt 0cm 5.4pt"> <asp:Label runat="server" ID="LabelOtherInformation" Text="Cadde/Sokak/KapıNo:"></asp:Label> </td> <td width="142" valign="top" style="width: 106.3pt; border-top: none; border-left: none; padding: 0cm 5.4pt 0cm 5.4pt"> <asp:Label runat="server" ID="LabelOtherInformationData" Text='<%# DataBinder.Eval(Container.DataItem, "OtherInformation")%>'></asp:Label> </td> </tr> <tr runat="server" id="trcompanyname"> <td width="170" valign="top" style="width: 127.2pt; border-top: none; padding: 0cm 5.4pt 0cm 5.4pt"> <asp:Label runat="server" ID="LabelCompanyName" Text="Firma:"></asp:Label> </td> <td width="142" valign="top" style="width: 106.3pt; border-top: none; border-left: none; padding: 0cm 5.4pt 0cm 5.4pt"> <asp:Label runat="server" ID="LabelCompanyNameData" Text='<%# DataBinder.Eval(Container.DataItem, "CompanyName")%>'></asp:Label> </td> </tr> <tr runat="server" id="trcompanytaxoffice"> <td width="170" valign="top" style="width: 127.2pt; border-top: none; padding: 0cm 5.4pt 0cm 5.4pt"> <asp:Label runat="server" ID="LabelCompanyTaxOffice" Text="Vergi Dairesi:"></asp:Label> </td> <td width="142" valign="top" style="width: 106.3pt; border-top: none; border-left: none; padding: 0cm 5.4pt 0cm 5.4pt"> <asp:Label runat="server" ID="LabelCompanyTaxOfficeData" Text='<%# DataBinder.Eval(Container.DataItem, "CompanyTaxOffice")%>'></asp:Label> </td> </tr> <tr runat="server" id="trcompanytaxid"> <td width="170" valign="top" style="width: 127.2pt; border-top: none; padding: 0cm 5.4pt 0cm 5.4pt"> <asp:Label runat="server" ID="LabelCompanyTaxId" Text="Vergi No:"></asp:Label> </td> <td width="142" valign="top" style="width: 106.3pt; border-top: none; border-left: none; padding: 0cm 5.4pt 0cm 5.4pt"> <asp:Label runat="server" ID="LabelCompanyTaxIdData" Text='<%# DataBinder.Eval(Container.DataItem, "CompanyTaxId")%>'></asp:Label> </td> </tr> </tbody> </table> </ItemTemplate> <FooterTemplate> <tr> <td width="auto" valign="baseline" style="width: 232.5pt; border: solid windowtext 1.0pt; border-top: none; padding: 0cm 5.4pt 0cm 5.4pt"> <p class="MsoNormal" style="margin-bottom: 0cm; margin-bottom: .0001pt; line-height: normal; vertical-align: middle"> <asp:LinkButton runat="server" ID="LinkButtonAddNewDeliveryAdress" Text="Yeni Adres Ekle" CommandName="Add" ForeColor="Gray" CausesValidation="false" OnCommand="LinkButtonAddNew_Command" Width="135" Font-Size="Larger" Font-Bold="true" CssClass="center"></asp:LinkButton> </p> </td> </tr> </FooterTemplate> </telerik:RadComboBox>Thanks.
Regards,
Hristo Valyavicharski
Telerik
Here is my onitemdatabound event
protected void RadComboBoxAdresses_ItemDataBound(object sender, RadComboBoxItemEventArgs e) { if (e.Item is RadComboBoxItem) { DataRowView dataItem = (DataRowView)e.Item.DataItem; int count = dataItem.DataView.Count; Label LabelCompanyName = (Label)RadComboBoxDeliveryAdresses.Items[0].FindControl("LabelCompanyName"); Label LabelCompanyNameData = (Label)RadComboBoxDeliveryAdresses.Items[0].FindControl("LabelCompanyNameData"); Label LabelCompanyTaxOffice = (Label)RadComboBoxDeliveryAdresses.Items[0].FindControl("LabelCompanyTaxOffice"); Label LabelCompanyTaxOfficeData = (Label)RadComboBoxDeliveryAdresses.Items[0].FindControl("LabelCompanyTaxOfficeData"); Label LabelCompanyTaxId = (Label)RadComboBoxDeliveryAdresses.Items[0].FindControl("LabelCompanyTaxId"); Label LabelCompanyTaxIdData = (Label)RadComboBoxDeliveryAdresses.Items[0].FindControl("LabelCompanyTaxIdData"); // LinkButton lb = e.Item.FindControl("LinkButtonDeleteDeliveryAdress") as LinkButton; LinkButton LinkButtonDeleteDeliveryAdress = (LinkButton)RadComboBoxDeliveryAdresses.Items[0].FindControl("LinkButtonDeleteDeliveryAdress"); LinkButton lb = e.Item.FindControl("LinkBtn") as LinkButton; //ScriptManager.GetCurrent(this).RegisterAsyncPostBackControl(lb); try { AsyncPostBackTrigger trigger = new AsyncPostBackTrigger(); trigger.ControlID = lb.UniqueID; trigger.EventName = "Click"; //like "Click", "IndexChanged", etc. this.UpdatePanelAdress.Triggers.Add(trigger); } catch { //Your exception management } HtmlTableRow trcompanyname = (HtmlTableRow)e.Item.FindControl("trcompanyname"); HtmlTableRow trcompanytaxoffice = (HtmlTableRow)e.Item.FindControl("trcompanytaxoffice"); HtmlTableRow trcompanytaxid = (HtmlTableRow)e.Item.FindControl("trcompanytaxid"); if (count == 1) { LinkButtonDeleteDeliveryAdress.Visible = false; } if (dataItem["InvoiceType"].ToString() == "Bireysel") { trcompanyname.Visible = false; trcompanytaxoffice.Visible = false; trcompanytaxid.Visible = false; LabelCompanyName.Visible = false; LabelCompanyNameData.Visible = false; LabelCompanyTaxOffice.Visible = false; LabelCompanyTaxOfficeData.Visible = false; LabelCompanyTaxId.Visible = false; LabelCompanyTaxIdData.Visible = false; } else { trcompanyname.Visible = true; trcompanytaxoffice.Visible = true; trcompanytaxid.Visible = true; } } }RadComboBox loading in run time.
Removed if (!Is.Postback) check and now when clicking LinkButton firing ItemdataBound always.
But firing oncommand event only when I clicking first item with wrong command argument.(second items command argument)
Only first item firing OnCommandEvent.
I achieve this issue with this codes
//aspx<input type="button" id="btnDelete" onclick='<%# String.Format("javascript:return SaveWithParameter(\"{0}\")", Eval("AdressId").ToString()) %>' value="Sil"/> //javascript <script type="text/javascript"> function SaveWithParameter(parameter) { __doPostBack('btnDelete', parameter) }</script>//cs if (Request["__EVENTARGUMENT"] != null && Request["__EVENTTARGET"] != null) { string parameter = Request["__EVENTARGUMENT"]; // parameter string target = Request["__EVENTTARGET"]; // btnSave if (target == "btnDelete") { SqlDataSourceAdress.DeleteParameters["AdressId"].DefaultValue = parameter; SqlDataSourceAdress.Delete(); } }