I've run into an issue using modal popups and controls on a page, and I've created a test scenario. What I'm trying to do is, when the user submits a form to save data to a database, the application first validates if everything is correct. If not, display a modal popup. This works find the first time I press "Save Data" in my test, but the 2nd time, any bound controls seem to lose their values. For example, the line -
Dim value As String = RadComboBox1.SelectedItem.Value
gives an 'Object reference not set to an instance of an object" error. Do I have to rebind every control on the page in the code-behind, or is there a better way to do this? Is this happening because I'm putting the RadWindowManager into the AjaxPanel? (I read a bit of documentation about it, but I couldn't clearly understand it).
EDIT: It also happens with another control (button) that does a postback. While rebinding does prevent the "Object Reference..." error, it loses its' selected value.
<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="AjaxTest.aspx.vb" Inherits="ModalTest.AjaxTest" %>
<%@ Register assembly="Telerik.Web.UI" namespace="Telerik.Web.UI" tagprefix="telerik" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<telerik:RadScriptManager ID="RadScriptManager1" Runat="server">
</telerik:RadScriptManager>
<telerik:RadWindowManager ID="RadWindowManager1" runat="server" Skin="WebBlue">
</telerik:RadWindowManager>
<telerik:RadAjaxPanel ID="RadAjaxPanel1" runat="server">
</telerik:RadAjaxPanel>
<telerik:RadAjaxManager ID="RadAjaxManager1" runat="server">
<AjaxSettings>
<telerik:AjaxSetting AjaxControlID="RadButton1">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="RadAjaxPanel1" LoadingPanelID="RadAjaxPanel1" />
</UpdatedControls>
</telerik:AjaxSetting>
</AjaxSettings>
</telerik:RadAjaxManager>
<telerik:RadAjaxLoadingPanel ID="RadAjaxLoadingPanel1" Runat="server" Skin="Default">
</telerik:RadAjaxLoadingPanel>
<telerik:RadButton ID="btnSave" runat="server" Text="Save Data">
</telerik:RadButton>
<telerik:RadLabel ID="RadLabel1" runat="server">
</telerik:RadLabel>
<telerik:RadComboBox ID="RadComboBox1" Runat="server" DataSourceID="SqlDataSource1" DataTextField="Title" DataValueField="ID">
</telerik:RadComboBox>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:AppConnectionString %>" SelectCommand="SELECT [ID], [Title] FROM [luTest]"></asp:SqlDataSource>
</div>
</form>
</body>
</html>
Imports Telerik.Web.UI
Public Class AjaxTest
Inherits System.Web.UI.Page
Protected Sub RadButton1_Click(sender As Object, e As EventArgs) Handles btnSave.Click
' Simulate Data Validation.
RadAjaxPanel1.Controls.Clear()
RadAjaxPanel1.Controls.Add(RadWindowManager1)
' The commented out code also works, but the dropdown still loses its' values.
RadWindowManager1.Windows.Clear()
RadWindowManager1.RadAlert("Test Validation Message", 330, 180, "Error", "")
' CreateModalWindow(RadWindowManager1, "mModal\Modal.aspx")
' Simulating collecting data for saving to a database table.
Dim value As String = RadComboBox1.SelectedItem.Value
End Sub
Private Sub CreateModalWindow(WindowManager As RadWindowManager, url As String)
Dim RadWindow1 As New RadWindow
With RadWindow1
.ID = "rwTest"
.Height = 600
.Width = 800
.Title = "Title"
.DestroyOnClose = True
.Skin = "WebBlue"
.Modal = True
.NavigateUrl = url
End With
WindowManager.Windows.Clear()
WindowManager.Windows.Add(RadWindow1)
Dim PageHandler As Page = HttpContext.Current.Handler
Dim script As String = "function f(){$find(""" + RadWindow1.ClientID + """).show(); Sys.Application.remove_load(f);}Sys.Application.add_load(f);"
RadAjaxPanel1.ResponseScripts.Add(script)
ScriptManager.RegisterStartupScript(PageHandler, PageHandler.GetType(), "key", script, True)
End Sub
End Class
We need to change the selected item of RadComboBox's hosted in RadGrid in BatchEdit mode.
We have a RadGrid with parent child relationships. If the parent row combobox is changed then the change needs to ripple through and change the same value in the child rows. If a child row is changed the parent may need to be changed as well.
The parent can be set to "Multiple,Detailed,Deferred" and a couple other values. If the parent is changed to Detailed then all the children become detailed. If the parent is Detailed and one of the children is changed to something other than Detailed then the parent must change to Multiple. If all the children changed to the same value then the parent should be changed to that value as well.
We are triggering processing with the grid OnBatchEditSetCellValue client event.
MasterTableView EditMode="Batch"
BatchEditSetting EditType="Cell"
Hi,
I'm trying to use the Treelist for a data source with the following definition
public class MyGridItem
{
public string ID { get; set; }
public string Name { get; set; }
public string ParentID { get; set; }
public bool IsIncluded { get; set; }
public bool IsExcluded { get; set; }
}
In markup I've got
<telerik:RadTreeList ID="RadTreeMarkers" runat="server" ParentDataKeyNames="ParentID" DataKeyNames="ID" AutoGenerateColumns="false"
OnNeedDataSource="RadTreeMarkers_NeedDataSource" AllowMultiItemEdit="true" ExpandCollapseMode="Client" EditMode="InPlace"
AllowPaging="false" AllowSorting="false" OnItemDataBound="RadTreeMarkers_ItemDataBound">
<Columns>
<telerik:TreeListBoundColumn DataField="ID" UniqueName="ID" Visible="false" ForceExtractValue="Always"></telerik:TreeListBoundColumn>
<telerik:TreeListBoundColumn DataField="ParentID" UniqueName="ParentID" Visible="false"></telerik:TreeListBoundColumn>
<telerik:TreeListBoundColumn DataField="Name" UniqueName="Name" HeaderText="Mark" ReadOnly="true"></telerik:TreeListBoundColumn>
<telerik:TreeListCheckBoxColumn DataField="IsIncluded" UniqueName="IsIncluded" HeaderText="Included" ForceExtractValue="Always"></telerik:TreeListCheckBoxColumn>
<telerik:TreeListCheckBoxColumn DataField="IsExcluded" UniqueName="IsExcluded" HeaderText="Excluded" ForceExtractValue="Always"></telerik:TreeListCheckBoxColumn>
</Columns>
</telerik:RadTreeList>
protected void RadTreeMarkers_NeedDataSource(object sender, TreeListNeedDataSourceEventArgs e)
{
var treeData = MyFacade.GetTreeData();
var treeDataGridItems = treeData.Select(m => new GridItem
{
ID = m.ID.ToString(),
Name = m.Name,
ParentID = m.ParentID.HasValue ? m.ParentID.Value.ToString() : string.Empty,
IsIncluded = m.IsIncluded.HasValue && m.IsIncluded == true,
IsExcluded = m.IsIncluded.HasValue && m.IsIncluded == false
}
).ToList();
RadTreeMarkers.DataSource = treeDataGridItems;
}
protected void RadTreeMarkers_ItemDataBound(object sender, TreeListItemDataBoundEventArgs e)
{
if (e.Item is TreeListDataItem item)
{
item.Edit = true;
}
}
The intention is for (only) the two checkboxes to be always editable in the client.
However, when rendered in the client the root items are editable but none of the child items is editable.
What am I doing wrong?
I am trying to disable embeddedscripts for radgrid - everything works but context menu - which scripts altogether do I need to add?
This write up (linked below) is incorrect or out of date - can someone please help.
https://docs.telerik.com/devtools/aspnet-ajax/getting-started/performance/disabling-embedded-resources#disabling-embedded-resources
Hi guys,
I'm using 2 MonthYearPickers on a page and need that one of them to show only the year.
How can i do this? Tryed the css solution with #rcMView_month but that changes for both controls.
Thanks,
Antonio
Hello,
We have a requirement to attach emails to records for audit purposes. Is this possible with your controls?
Regards,
D