<
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
If
End
Sub