<asp:PlaceHolder ID="NGridPlaceHolder" runat="server"> </asp:PlaceHolder> <input type="hidden" id="radGridClickedRowIndex" name="radGridClickedRowIndex" /> <telerik:RadContextMenu ID="RadMenu1" runat="server" OnClientItemClicked="RadContextMenuClicked" EnableRoundedCorners="true" EnableShadows="true"> <Items> <telerik:RadMenuItem Text="Add" Value="Add" /> <telerik:RadMenuItem Text="Edit" Value="Edit" /> <telerik:RadMenuItem Text="Delete" Value="Delete" /> </Items> </telerik:RadContextMenu>function RadContextMenuClicked(sender, eventArgs) { var menuItemValue = eventArgs.get_item().get_text(); switch (menuItemValue) { case "Delete": ......................................... HOW TO SHOW DELETE WINDOW AND DELETE SELECTED RECORD AND REFRESH GRID break;.. case "Edit": ........................... HOW TO SHOW EDIT WINDOW AND DELETE SELECTED RECORD AND REFRESH GRID break; case "Add": ........................... HOW TO SHOW INSERT WINDOW AND REFRESH SELECTED GRID break;
//Show insert/edit/delete
function RowContextMenu(sender, eventArgs) {
senderGrid = sender;
editEventArgs = eventArgs;
var menu = $find("<%=RadMenu1.ClientID%>");
var evt = eventArgs.get_domEvent();
if (evt.target.tagName == "INPUT" || evt.target.tagName == "A") {
return;
}
var index = eventArgs.get_itemIndexHierarchical();
document.getElementById("radGridClickedRowIndex").value = index;
sender.get_masterTableView().selectItem(sender.get_masterTableView().get_dataItems()[index].get_element(), true);
menu.show(evt);
evt.cancelBubble = true;
evt.returnValue = false;
if (evt.stopPropagation) {
evt.stopPropagation();
evt.preventDefault();
}
}
} }<telerik:RadToolBar ID="RadToolBar3" runat="server" Skin="Black" BorderWidth="0px" onbuttonclick="RadToolBar3_ButtonClick"> <Items> <telerik:RadToolBarDropDown runat="server" Font-Size="Medium"> <Buttons> <telerik:RadToolBarButton runat="server" Text="Sign Out" Font-Size="Medium" CheckOnClick="true" CommandName="SignOut"> </telerik:RadToolBarButton> <telerik:RadToolBarButton runat="server" Text="Contact Us" Font-Size="Medium" CheckOnClick="true" CommandName="ContactUs"> </telerik:RadToolBarButton> </Buttons> </telerik:RadToolBarDropDown> </Items> </telerik:RadToolBar>
Me.RadAjaxManager1.AjaxSettings.AddAjaxSetting(myCheckBox, [nothing to put here]) ?
It throws an "Object reference not set to an instance of an object" error.
Thanks in advance,
Dana
<asp:Panel ID="Panel1" runat="server"> <asp:Panel ID="Panel2" Visible="false" runat="server"> <telerik:RadGrid AutoGenerateColumns="false" ID="SignersGrid" OnItemCommand="SignersGrid_ItemCommand" runat="server" Width="765px" Height="410px" OnItemDataBound="SignersGrid_ItemDataBound" AllowSorting="true" AllowFilteringByColumn="true" AllowPaging="true" PageSize="8" CommandItemDisplay="Bottom" BorderWidth="1px" BorderColor="#999999" EnableEmbeddedSkins="true" Skin="Default" DataSourceID="SQLDataSource1" ShowStatusBar="true" ShowFooter="false" GridLines="None" > <PagerStyle Mode="NextPrevAndNumeric" /> <GroupingSettings CaseSensitive="false" /> <StatusBarSettings ReadyText="Ready" LoadingText="Loading..." /> <MasterTableView AutoGenerateColumns="false" EditMode="InPlace" AllowFilteringByColumn="True" ShowFooter="True" TableLayout="Auto" DataKeyNames="VoterSignatureId" > <CommandItemSettings ExportToPdfText="Export to PDF"></CommandItemSettings> <RowIndicatorColumn FilterControlAltText="Filter RowIndicator column"> </RowIndicatorColumn> <ExpandCollapseColumn FilterControlAltText="Filter ExpandColumn column"> </ExpandCollapseColumn> <Columns> <telerik:GridBoundColumn HeaderStyle-Width="125px" HeaderText="First Name" UniqueName="FirstName" DataField="FirstName" SortExpression="FirstName" > </telerik:GridBoundColumn> <telerik:GridBoundColumn HeaderStyle-Width="125px" UniqueName="LastName" HeaderText="Last Name" DataField="LastName" SortExpression="LastName" > </telerik:GridBoundColumn> <telerik:GridBoundColumn HeaderStyle-Width="350px" UniqueName="VoterAddress" HeaderText="Address" DataField="Address" SortExpression="Address" > </telerik:GridBoundColumn > <telerik:GridButtonColumn HeaderStyle-Width="135px" DataTextFormatString="Remove" ButtonType="PushButton" UniqueName="RemoveSigner" ConfirmText="Are you certain that you want to remove this signature?" Text="Remove" HeaderText="Remove" CommandName="RemoveSigner" CommandArgument="VoterSignatureId" DataTextField="VoterSignatureId" > </telerik:GridButtonColumn> <telerik:GridBoundColumn UniqueName="VoterSignatureId" HeaderText="Id" DataField="VoterSignatureId" Visible="false" > </telerik:GridBoundColumn > </Columns> <EditFormSettings> <EditColumn FilterControlAltText="Filter EditCommandColumn column"> </EditColumn> </EditFormSettings> </MasterTableView> <ClientSettings> <Scrolling AllowScroll="true" UseStaticHeaders="true" /> </ClientSettings> <FilterMenu EnableImageSprites="False"> </FilterMenu> <HeaderContextMenu CssClass="GridContextMenu GridContextMenu_Default"> </HeaderContextMenu> </telerik:RadGrid> </asp:Panel></asp:Panel><telerik:RadAjaxLoadingPanel ID="RadAjaxLoadingPanel1" runat="server" Height="100px" Width="100px" Transparency="50"><img alt="Loading..." src="ajax-loader.gif" style="border: 0; height: 40px; width: 40px;" /></telerik:RadAjaxLoadingPanel>protected void Page_Init(object sender, EventArgs e){ string griddatasource = "SELECT VoterSignatureId, PetitionId, LastName, FirstName, [Address] FROM VoterSignatures "; string gridWHERE = "WHERE VoterSignatureStatusId = 1 AND PetitionId = " + Request.QueryString["PID"]; SqlDataSource1.SelectCommand = griddatasource + gridWHERE;}protected void SignersGrid_ItemCommand(Object source, Telerik.Web.UI.GridCommandEventArgs e){ if (e.CommandName == "RemoveSigner") { // First we need to get the key value of the record the user wants to remove from the lsit Object index = e.CommandArgument; Int16 iSignerRecKey = Convert.ToInt16(index); // Now we can get the record, change it (remove it from the list), and update it ElectronicPetitionSystemDataContext efdc = new ElectronicPetitionSystemDataContext(); VoterSignature vs = efdc.VoterSignatures.Single(vrec => vrec.VoterSignatureId == iSignerRecKey); vs.VoterSignatureStatusId = 2; efdc.SubmitChanges(); this.SignersGrid.Rebind(); }}protected void SignersGrid_ItemDataBound(Object sender, Telerik.Web.UI.GridItemEventArgs e)// { if (e.Item is GridDataItem) { //GridDataItem dataItem = e.Item as GridDataItem; //Button button_Renamed = (Button)dataItem["RemoveSigner"].Controls[0]; //button_Renamed.CommandArgument = Convert.ToString(DataBinder.Eval(e.Item.DataItem, "VoterSignatureId")); //String sMsg = ""; //sMsg = "Are you certain that you want to remove " + Convert.ToString(DataBinder.Eval(e.Item.DataItem, "FirstName")) + "?"; // Telerik example for this is located at: }}protected void SignersGrid_AjaxRequest(Object sender, Telerik.Web.UI.AjaxRequestEventArgs e){ if (e.Argument == "InitialPageLoad") { //System.Threading.Thread.Sleep(1000); this.Panel2.Visible = true; }}I've recently noticed the this causes the loading panel to not work properly, which is not a big deal, but now I have run into a problem with getting a radcombobox to work, so I need to figure out how to fix this.
The code in this user control works fine if I hardcode the control onto the page. It quits working properly (especially the radComboBox), once I change the user control to being dynamically added.
I tried adding the ajaxsettings from the code behind on page_load, according to this example: http://www.telerik.com/help/aspnet-ajax/ajax-user-controls.html, but this also stops working when placed on a user control that is added at runtime.
The code below is simplified to have a workable example. Thank you for your help.
USER CONTROL ASCX CODE
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="ctrlTest.ascx.cs" Inherits="ctrlTest" %><%@ Register TagPrefix="telerik" Namespace="Telerik.Web.UI" Assembly="Telerik.Web.UI" %><telerik:RadAjaxManager EnableAJAX="true" ID="RadAjaxManagerlvReviews" runat="server" > <AjaxSettings> <telerik:AjaxSetting AjaxControlID="pGrid"> <UpdatedControls> <telerik:AjaxUpdatedControl ControlID="pGrid" LoadingPanelID="RadAjaxLoadingPanelCESearch" /> </UpdatedControls> </telerik:AjaxSetting> <telerik:AjaxSetting AjaxControlID="btnViewAllCECourses"> <UpdatedControls> <telerik:AjaxUpdatedControl ControlID="pGrid" LoadingPanelID="RadAjaxLoadingPanelCESearch" /> <telerik:AjaxUpdatedControl ControlID="pSearch" /> </UpdatedControls> </telerik:AjaxSetting> <telerik:AjaxSetting AjaxControlID="btnSearchCECourses"> <UpdatedControls> <telerik:AjaxUpdatedControl ControlID="pGrid" LoadingPanelID="RadAjaxLoadingPanelCESearch" /> <telerik:AjaxUpdatedControl ControlID="pSearch" /> </UpdatedControls> </telerik:AjaxSetting> </AjaxSettings> </telerik:RadAjaxManager> <telerik:RadAjaxLoadingPanel ID="RadAjaxLoadingPanelCESearch" runat="server" Height="75px" Width="75px" Transparency="50" InitialDelayTime="0" > <img alt="Loading..." src='<%= RadAjaxLoadingPanel.GetWebResourceUrl(Page, "Telerik.Web.UI.Skins.Default.Ajax.loading.gif") %>' style="border: 0px;" /> </telerik:RadAjaxLoadingPanel><asp:Panel ID="pSearch" runat="server"> <telerik:radcombobox runat="server" id="radCategories" ShowToggleImage=true Width="195px" /> <asp:Button ID="btnSearchCECourses" runat="server" Text="Search Courses" OnClick="btnSearchCECourses_Click" CausesValidation="False" BWidth="MedLarge" Height="27px" style="font-size:12px;" /> <asp:Button ID="btnViewAllCECourses" runat="server" Text="ViewAllCourses" OnClick="btnViewAllCECourses_Click" CausesValidation="False" BWidth="MedLarge" Height="27px" style="font-size:12px;" /> </asp:Panel> <asp:Panel ID="pGrid" runat="server"> <telerik:RadListView ID="lvCEResults" runat="server" OnNeedDataSource="lvCEResults_NeedDataSource" AllowCustomPaging="true" AllowPaging="true" ItemPlaceholderID="phRadListView" Width="760px" > <LayoutTemplate> <telerik:RadDataPager ID="RadDataPagerTop" runat="server" IsTotalItemCountFixed="True" Skin="Windows7" CssClass="Custom"> <Fields> <telerik:RadDataPagerButtonField FieldType="FirstPrev" /> <telerik:RadDataPagerButtonField FieldType="Numeric" /> <telerik:RadDataPagerButtonField FieldType="NextLast" /> </Fields> </telerik:RadDataPager> <div style="height:10px"></div> <asp:PlaceHolder ID="phRadListView" runat="server"></asp:PlaceHolder> <telerik:RadDataPager ID="RadDataPagerBottom" runat="server" IsTotalItemCountFixed="True" Skin="Windows7" CssClass="Custom"> <Fields> <telerik:RadDataPagerButtonField FieldType="FirstPrev" /> <telerik:RadDataPagerButtonField FieldType="Numeric" /> <telerik:RadDataPagerButtonField FieldType="NextLast" /> </Fields> </telerik:RadDataPager> </LayoutTemplate> <ItemTemplate> <table> <tr> <td><%#Eval("course_id") %></td> <td><%#Eval("description") %></td> </tr> </table> </ItemTemplate> </telerik:RadListView></asp:Panel>USER CONTROL CODE BEHIND
public partial class ctrlTest : System.Web.UI.UserControl{ DataTable dt = new DataTable(); protected void Page_Load(object sender, EventArgs e) { CreateCategoryData(); } protected void lvCEResults_NeedDataSource(object source, RadListViewNeedDataSourceEventArgs e) { CreateCEData(); lvCEResults.VirtualItemCount = 30; lvCEResults.DataSource = dt; } private void CreateCEData() { dt.Columns.Add("course_id"); dt.Columns.Add("description"); for (int i = 0;i <=30;i++) { dt.Rows.Add(i,"desc" + i); } } private void CreateCategoryData() { DataTable dtCategories = new DataTable(); dtCategories.Columns.Add("category_id"); dtCategories.Columns.Add("description"); for (int i = 1; i <= 30; i++) { dtCategories.Rows.Add(i, "category_" + i); } radCategories.Items.Add(new RadComboBoxItem("AllCategories", "0")); foreach (DataRow dr in dtCategories.Rows) { radCategories.Items.Add(new RadComboBoxItem(dr["description"].ToString(), dr["category_id"].ToString())); } } protected void btnSearchCECourses_Click(object sender, System.EventArgs e) { lvCEResults.CurrentPageIndex = 0; lvCEResults.Rebind(); } protected void btnViewAllCECourses_Click(object sender, EventArgs e) { radCategories.SelectedValue = "0"; lvCEResults.CurrentPageIndex = 0; lvCEResults.Rebind(); }}
Page code:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %><%@ Register TagPrefix="UC" src="ctrlTest.ascx" TagName="TEST" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head runat="server"> <title></title></head><body> <form id="form1" runat="server"> <asp:ScriptManager ID="ScriptManager1" runat="server" /> <div> <asp:Panel ID="ph" runat="server" EnableViewState=true /> </div> </form></body></html>Page code behind:
using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { ctrlTest ucSearchResults = (ctrlTest)LoadControl("ctrlTest.ascx"); ph.Controls.Add(ucSearchResults); }}
Hello,
I have a 3-tier radgrid and I am using the DetailTableDataBind to set the SelectParameters of my ObjectDataSources. I am having trouble on the third tier accessing the information correctly. The data keys on the third tier contain all of the IDs I need for the datasource, but I could also get the keys from the first and second tier as they are the same. But I cannot seem to get the syntax correct to do this. My aspx and vb code are below.
ASPX:
<telerik:RadGrid ID="gvSites" DataSourceID="odsSiteList" runat="server" AutoGenerateColumns="False" GridLines="None"> <MasterTableView DataSourceID="odsSiteList" DataKeyNames="ID" Name="Sites" EditMode="EditForms"> <DetailTables> <telerik:GridTableView CssClass="detail_table" DataSourceID="odsCategoryList" AutoGenerateColumns="false" DataKeyNames="ID" Name="Categories" AllowAutomaticInserts="true" AllowAutomaticUpdates="true" AllowAutomaticDeletes="true" CommandItemDisplay="Top" CommandItemSettings-AddNewRecordText="Add Category"> <DetailTables> <telerik:GridTableView CssClass="detail_table" DataSourceID="odsItemList" AutoGenerateColumns="false" DataKeyNames="Site_ID,Item_ID,Category_ID" Name="Items" AllowAutomaticInserts="true" AllowAutomaticUpdates="true" AllowAutomaticDeletes="true" CommandItemDisplay="Top" CommandItemSettings-AddNewRecordText="Add Item">Private Sub gvSites_DetailTableDataBind(ByVal source As Object, ByVal e As GridDetailTableDataBindEventArgs) Handles gvSites.DetailTableDataBind Dim dataItem As GridDataItem = CType(e.DetailTableView.ParentItem, GridDataItem) If "Categories".Equals(e.DetailTableView.Name) Then odsCategoryList.SelectParameters("SiteID").DefaultValue = dataItem.GetDataKeyValue("ID").ToString() End If If "Items".Equals(e.DetailTableView.Name) Then odsItemList.SelectParameters("CategoryID").DefaultValue = dataItem.GetDataKeyValue("ID").ToString() odsItemList.SelectParameters("SiteID").DefaultValue = ??? End IfEnd Sub