저는 현재 ASP.NET에서 Ajax 탭 컨트롤을 사용하는 프로젝트에서 작업하고 있습니다. 이 프로젝트의 제 언어는 VB.NET입니다. 탭에서 "OnClientClick"이벤트를 활용하려고합니다. 데이터베이스의 데이터를 사용하여 탭을 채우고 VB 함수를 사용하여 실제로 탭을 만듭니다. VB 코드는 다음과 같습니다 :onClientClick Javascript 함수를 호출하고 매개 변수를 전달할 수 없습니다.
Protected Sub makeTab(ByVal categoryName As String, ByVal categoryId As String)
Dim label As New Label
label.Text = categoryName
Dim tab As New AjaxControlToolkit.TabPanel
tab.Controls.Add(label)
tab.HeaderText = categoryName
tab.OnClientClick = "display_alert(" + categoryId + ")"
tcResultSet.Tabs.Add(tab)
'Next
For x As Integer = 1 To tcResultSet.Tabs.Count
If tcResultSet.Tabs(tcResultSet.Tabs.Count - x).HeaderText = "Tab0" Then tcResultSet.Tabs.RemoveAt(tcResultSet.Tabs.Count - x)
Next
End Sub
이 함수는 데이터베이스에서 반환하는 모든 레코드에 대해 호출됩니다.
<asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server" EnablePartialRendering="true" />
<asp:TabContainer ID="tcResultSet" runat="server" AutoPostBack="true" ScrollBars="auto" >
<asp:TabPanel ID="tbTab0" runat="server" HeaderText="Tab0" />
</asp:TabContainer>
내 자바 스크립트 함수는 다음과 같습니다 : 영문 페이지에서
탭 컨테이너는<script type="text/javascript" >
function display_alert(categoryNumber) {
window.alert("Hello! You clicked a tab");
}
</script>
과는 페이지의 상단에 내 페이지 헤드의 내부에 배치됩니다. 보시다시피, 저는 현재 자바 스크립트 함수 내에서 변수를 사용하지 않고 있습니다. 현재이 코드는 작동하지 않습니다. Javascript 함수 정의에서 변수를 제거하고 "display_alert"와 같은 자바 스크립트 함수를 호출하면 작동합니다. 함수 이름 뒤에 "()"를 포함하면 작동하지 않습니다. 이 주위에 어떤 방법이 있습니까? 이 방법을 제대로 작동시키는 방법은 무엇입니까?
그래서'tab.OnClientClick = "display_alert()"'를 사용하면 작동하지 않습니까? 또한 인라인 이벤트 핸들러를 설정하는 데 'OnClientClick'을 사용하지 말고 대신 자바 스크립트로 눈에 띄지 않게 바인딩하는 것이 좋습니다. 요소에 특정'class' 속성을 부여하여 그 방식으로 찾을 수 있습니다. 이것은 DOM이 준비되었을 때 (예 :'window.onload') 할 수 있으며, VB에서'data- *'속성을 설정하여'categoryId'에 접근 할 수 있습니다. – Ian
예, tab.OnClientClick = "display_alert()"를 사용하면 작동하지 않습니다. – user2233255
글쎄, 탭 # 1을 클릭하면 자바 스크립트 기능에서 Tab # 1 또는 Tab # 2가 아닌 Tab # 1이 클릭되었음을 알아야합니다. Javascript를 사용하여 메서드 호출을 바인딩하면 알 수 있습니까? – user2233255