The code below is not working for some reason. The intent is if a user clicks the main menu check the value in the cb dropdown and hide/show a menu item. But the menu item is not hiding and displaying like I expect. Any ideas?
///////////////////////////////////////////////////
<
telerik:RadMenu ID="menuSettings" runat="server" OnClientItemClicking
=MenuItemClicking>
////////////////////////////////////////////////
function MenuItemClicking()
{
debugger;
var cb= $find("<%=cb.ClientID%>");
if (cb._selectedIndex==0)
ItemVisibility(
"ShowHideEmptyBeds",false);
else
ItemVisibility("ShowHideEmptyBeds",true);
}
function
ItemVisibility(menuText,visibility)
{
var menu = $find("<%= menuSettings.ClientID %>");
var menuItem = menu.findItemByText(menuText);
if(menuItem && (menuItem.get_visible()!=visibility))
{
menuItem.set_visible(visibility);
}
}
I have a usercontrol with the following hierarchy
Parent.master -> CreatePeople.master -> Details.aspx -> Details.ascx
In CreatePeople.master there is a RadWindowManager.
If in Details.ascx I add a button and put code in the OnClientClick event to open a radconfirm window it works fine.
However if I add another button and in its OnClick event use the InjectScript method to run the radconfirm window it fails with a javascript error 'undefined is null or not an object'. If I debug the javascript with firefox the code seems to be having trouble finding the window manager.
I've isolated this in a mini project which just contains the files mentioned. No Ajax managers or anything like that.
Any ideas?
Code Behind:
protected void button1_Click(object sender, EventArgs e)
{
InjectScript.Text = "<script>confirmSaveDuplicatePerson()</script>";
}
Details.ascx
<telerik:RadCodeBlock ID="RadCodeBlock1" runat="server">
<script type="text/javascript">
function confirmSaveDuplicatePerson()
{
radconfirm('Are you sure?',confirmSaveCallback,330,100,null,'Duplicate');
}
function confirmSaveCallback(arg)
{
radalert(arg);
}
</script>
</telerik:RadCodeBlock>
<asp:Label ID="InjectScript" runat="server"></asp:Label>
<asp:Button ID="button1" runat="server" Text="click me" OnClick="button1_Click" />
<asp:Button ID="buttonClient" runat="server" Text="Client click" OnClientClick="confirmSaveDuplicatePerson(); return false;" />
Public Sub AddComment( _
ByVal DASHBOARD_PAGE_ID As Long, _
ByVal LOGON_ID As String, _
ByVal DATE_ADDED As String, _
ByVal COMMENTARY As String, _
ByVal LIVE As Boolean, _
ByVal PROMOTED As Boolean, _
ByVal RESPONSIBLE_PERSON As String, _
ByVal OUTCOME As String)
' Create Connection
Dim con As New SqlConnection(_conString)
'Create Command
Dim cmdText As String = "SP_CLIN_DASHBOARD_ADD_COMMENT" ' This requires a parameter of DashboardPage_ID
Dim cmd As New SqlCommand(cmdText, con)
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.AddWithValue(
"@DASHBOARD_PAGE_ID", DASHBOARD_PAGE_ID)
cmd.Parameters.AddWithValue(
"@LOGON_ID", LOGON_ID)
cmd.Parameters.AddWithValue(
"@DATE_ADDED", DATE_ADDED)
cmd.Parameters.AddWithValue(
"@COMMENTARY", COMMENTARY)
cmd.Parameters.AddWithValue(
"@LIVE", LIVE)
cmd.Parameters.AddWithValue(
"@PROMOTED", PROMOTED)
cmd.Parameters.AddWithValue(
"@RESPONSIBLE_PERSON", RESPONSIBLE_PERSON)
cmd.Parameters.AddWithValue(
"@OUTCOME", OUTCOME)
cmd.ExecuteNonQuery()
End Sub
Protected Sub srcComments_Inserting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.ObjectDataSourceMethodEventArgs) Handles srcComments.Inserting
e.InputParameters.Item(
"DASHBOARD_PAGE_ID") = Session("DASHBOARD_PAGE_ID")
e.InputParameters.Item(
"LOGON_ID") = HttpContext.Current.User
e.InputParameters.Item(
"DATE_ADDED") = Now()
End Sub
| <telerik:RadGrid ID="RadGrid1" runat="server" |
| AllowPaging="true" |
| AllowCustomPaging="true" |
| PageSize="30"> |
| </telerik:RadGrid> |
| Protected Sub RadGrid1_NeedDataSource(ByVal source As Object, ByVal e As Telerik.Web.UI.GridNeedDataSourceEventArgs) Handles RadGrid1.NeedDataSource |
| Dim startRowIndex As Integer = (RadGrid1.CurrentPageIndex * RadGrid1.PageSize) + 1 |
| Dim maximumRows As Integer = RadGrid1.PageSize |
| Dim dt As New System.Data.DataTable |
| dt.Columns.Add(New System.Data.DataColumn("a")) |
| dt.Columns.Add(New System.Data.DataColumn("b")) |
| Dim r As System.Data.DataRow |
| For i As Integer = startRowIndex To startRowIndex + maximumRows |
| r = dt.NewRow() |
| r("a") = "a" + CStr(i) |
| r("b") = "b" + CStr(i) |
| dt.Rows.Add(r) |
| Next |
| RadGrid1.DataSource = dt |
| RadGrid1.VirtualItemCount = 100000 |
| End Sub |