2017-04-20 72 views
0

我在RadOrgChart(telerik控件)中提供的項目模板內有一個按鈕。無法觸發RADorgChart中項目模板內按鈕的點擊事件

<asp:UpdatePanel ID="uplDataHierarchy" runat="server" UpdateMode="Always"> 
    <ContentTemplate> 
     <div id="divOrgChart" runat="server" style="width: 100%; height: 480px; overflow-y: auto"> 
     <rad:RadOrgChart ID="radOrgChartHierarchy" runat="server" RenderMode="Lightweight" DisableDefaultImage="true" DataFieldID="ID" DataFieldParentID="PARENT_ID"> 
      <ItemTemplate> 
       <rad:RadLabel runat="server" ID="RadLblName" Text='<%# Eval("NAME")%>' CssClass="fa-align-center" Font-Size="X-Small"></rad:RadLabel> 
       <br /> 
       <rad:RadLabel runat="server" ID="RadLblPinCode" Text='<%# Eval("PINCODE")%>' CssClass="fa-align-center" Font-Size="X-Small"></rad:RadLabel> 
       <br /> 
       <rad:RadLabel runat="server" ID="RadLblAdd" Text='<%# Eval("Address")%>' CssClass="fa-align-center" Font-Size="X-Small"></rad:RadLabel> 
       <br /> 
       <asp:LinkButton ID="btnDetail" runat="server" CommandArgument='<%# Eval("ID") %>' Text="Get Detail" OnClick="btnDetail_Click" Font-Underline="false"></asp:LinkButton> 
      </ItemTemplate> 
     </rad:RadOrgChart> 
     <br></br> 
     </div> 
    </ContentTemplate> 
    <Triggers> 
    </Triggers> 
</asp:UpdatePanel> 

當我有這個senerio沒有更新面板中單擊事件爲BtnDetail被燒成完美。

但正如我在更新面板中,我無法觸發該按鈕的單擊事件。

  1. 鏈接按鈕嘗試過
  2. 按鈕
  3. Telerik的按鈕

試過在ASPX添加觸發器,如:

<asp:AsyncPostBackTrigger ControlID="btnDetail" EventName="btnDetail_Click" /> 

但這裏拋出錯誤:控制不了fou ND那我就從後面的代碼與NodeBound事件爲:

Protected Sub radOrgChartDealHierarchy_NodeDataBound(sender As Object, e As Telerik.Web.UI.OrgChartNodeDataBoundEventArguments) Handles radOrgChartDealHierarchy.NodeDataBound 
Dim lnkBtnDetail As LinkButton = e.Node.GroupItems(0).FindControl("btnDetail") 

註冊一個事件面板

Dim aspT = New AsyncPostBackTrigger() 
aspT.ControlID = lnkBtnDetail.ToString() 
aspT.EventName = "Click" 
uplDataHierarchy.Triggers.Add(aspT) 

通過腳本管理

Dim scrPtMgr As ScriptManager = ScriptManager.GetCurrent(Me.Page) 
scrPtMgr.RegisterAsyncPostBackControl(lnkBtnDetail) 
End Sub 

我Resgistering事件試圖做一個JS回發,即使在那裏我不能擊中服務器端點擊事件。

等待迴應。

回答

0

終於嘗試了4天后,我得到了解決方案。

由於LinkBut​​ton位於ItemTemplate中,所以Server端事件不會被觸發。

所以我們可以在這裏做的是:所有的NodeDataBound點擊事件的 首先,我們需要在客戶端事件添加到控件:還有

Protected Sub radOrgChartDealHierarchy_NodeDataBound(sender As Object, e As Telerik.Web.UI.OrgChartNodeDataBoundEventArguments) Handles radOrgChartDealHierarchy.NodeDataBound 
     Dim lnkBtnDetail As LinkButton = e.Node.GroupItems(0).FindControl("btnDetail") 
     lnkBtnDetail.OnClientClick = "bindDetails(" & e.Node.ID.ToString() & ");" 
End Sub 

您需要添加一個HiddenField到保持節點

<asp:UpdatePanel ID="uplDataHierarchy" runat="server" UpdateMode="Always"> 
    <ContentTemplate> 
     <div id="divOrgChart" runat="server" style="width: 100%; height: 480px; overflow-y: auto"> 
     <asp:HiddenField ID="HdnFldSelectedILD_ID" runat="server" Value="0" /> 
     <rad:RadOrgChart ID="radOrgChartHierarchy" runat="server" RenderMode="Lightweight" DisableDefaultImage="true" DataFieldID="ID" DataFieldParentID="PARENT_ID"> 
      <ItemTemplate> 
       <rad:RadLabel runat="server" ID="RadLblName" Text='<%# Eval("NAME")%>' CssClass="fa-align-center" Font-Size="X-Small"></rad:RadLabel> 
       <br /> 
       <rad:RadLabel runat="server" ID="RadLblPinCode" Text='<%# Eval("PINCODE")%>' CssClass="fa-align-center" Font-Size="X-Small"></rad:RadLabel> 
       <br /> 
       <rad:RadLabel runat="server" ID="RadLblAdd" Text='<%# Eval("Address")%>' CssClass="fa-align-center" Font-Size="X-Small"></rad:RadLabel> 
       <br /> 
       <asp:LinkButton ID="btnDetail" runat="server" CommandArgument='<%# Eval("ID") %>' Text="Get Detail" OnClick="btnDetail_Click" Font-Underline="false"></asp:LinkButton> 
      </ItemTemplate> 
     </rad:RadOrgChart> 
     <br></br> 
     </div> 
    </ContentTemplate> 
    <Triggers> 
    </Triggers> 
</asp:UpdatePanel> 

的ID,然後您必須添加以下JS功能: 在這裏,你會得到你將設置爲隱藏字段,並會做後回來theForm節點的ID。提交();

function bindDetails(id) { 
       document.getElementById("<%=HdnFldSelectedILD_ID.ClientID%>").value = id; 
       theForm.submit(); 
} 

現在的隱藏字段的值的頁面加載檢查,如果它不爲0,然後做你的處理如下:

If HdnFldSelectedILD_ID.Value = 0 Then 

     Else 
      //Your custom logic where you can access server side Controls as well 
     LoadCustom(HdnFldSelectedILD_ID.Value) 

     End If 

然後在LoadCustom你可以用做你的操縱服務器端控件,如:

Private Sub LoadFields(nID As Decimal) 
    RadLblName.Text="Test" 
End Sub 
相關問題