Hello,
I'm using Telerik AJAX components. In my project I have PanelBar with User Names as panel items. Each User has assigned Tasks, which are in nested RadGrid.
The first problem is that grid Delete confirm dialog does't show. Instead of it i see blank space inside the PanelBar.
Second issue is concerned with Tasks editing/inserting. These commands are handled by RadWindow opening another aspx page with DetailsView. In that window when clicking Update/Insert/Cancel buttons the window doen't close and instead of it the page reloads. I can debug Javascript functions GetRadWindow() and CancelEdit(), but it doesn't help at all. Pictures of issues are attached.
Here is my code for EditFormCS
<script type="text/javascript">
function CloseAndRebind(args)
{ GetRadWindow().BrowserWindow.refreshGrid(args); GetRadWindow().close(); }
function GetRadWindow() {
var oWindow = null; if (window.radWindow) oWindow = window.radWindow; //Will work in Moz in all cases, including clasic dialog
else if (window.frameElement.radWindow) oWindow = window.frameElement.radWindow; //IE (and Moz as well)
return oWindow;
}
function CancelEdit() {
var oWindow = GetRadWindow();
oWindow._windowManager.CloseAll();
oWindow.arguments = null;
oWindow.close(null);
return false;
}
</script>
</telerik:RadCodeBlock>
CodeBehind
I'm using Telerik AJAX components. In my project I have PanelBar with User Names as panel items. Each User has assigned Tasks, which are in nested RadGrid.
The first problem is that grid Delete confirm dialog does't show. Instead of it i see blank space inside the PanelBar.
Second issue is concerned with Tasks editing/inserting. These commands are handled by RadWindow opening another aspx page with DetailsView. In that window when clicking Update/Insert/Cancel buttons the window doen't close and instead of it the page reloads. I can debug Javascript functions GetRadWindow() and CancelEdit(), but it doesn't help at all. Pictures of issues are attached.
Here is my code for EditFormCS
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="EditFormCS.aspx.cs" Inherits="ArconCalendar.EditFormCS" %><
br
><
br
><%@ Register TagPrefix="telerik" Namespace="Telerik.Web.UI" Assembly="Telerik.Web.UI" %><
br
><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><
br
><
html
xmlns
=
"http://www.w3.org/1999/xhtml"
><
br
> <
br
><
head
id
=
"Head1"
runat
=
"server"
> <
title
>Edit dialog</
title
></
head
><
br
> <
body
> <
form
id
=
"form1"
runat
=
"server"
> <
br
> <
div
style
=
"height: auto; width: 300px"
><
br
> <
telerik:RadCodeBlock
ID
=
"RadCodeBlock1"
runat
=
"server"
>
<script type="text/javascript">
function CloseAndRebind(args)
{ GetRadWindow().BrowserWindow.refreshGrid(args); GetRadWindow().close(); }
function GetRadWindow() {
var oWindow = null; if (window.radWindow) oWindow = window.radWindow; //Will work in Moz in all cases, including clasic dialog
else if (window.frameElement.radWindow) oWindow = window.frameElement.radWindow; //IE (and Moz as well)
return oWindow;
}
function CancelEdit() {
var oWindow = GetRadWindow();
oWindow._windowManager.CloseAll();
oWindow.arguments = null;
oWindow.close(null);
return false;
}
</script>
</telerik:RadCodeBlock>
<
telerik:RadScriptManager
ID
=
"RadScriptManager1"
runat
=
"server"
></
telerik:RadScriptManager
><
br
> <
telerik:RadFormDecorator
ID
=
"RadFormDecorator1"
runat
=
"server"
DecoratedControls
=
"All"
Width
=
"400px"
/><
br
> <
telerik:RadWindowManager
ID
=
"window1"
runat
=
"server"
ReloadOnShow
=
"true"
> </
telerik:RadWindowManager
><
br
> <
br
/><
br
> <
br
/><
br
> <
asp:DetailsView
ID
=
"DetailsView1"
DataKeyNames
=
"TaskID"
runat
=
"server"
AutoGenerateRows
=
"False"
<br> Height="50px" Width="300px" OnItemCommand="DetailsView1_ItemCommand" OnItemInserting="DetailsView1_ItemInserting" <
br
> BorderWidth="0" CellPadding="0" CellSpacing="7" GridLines="None" OnItemUpdating="DetailsView1_ItemUpdating" OnModeChanging="DetailsView1_ModeChanging" ><
br
> <
Fields
><
br
> <
asp:BoundField
DataField
=
"Title"
HeaderText
=
"Title"
SortExpression
=
"Title"
ReadOnly
=
"false"
/><
br
> <
asp:BoundField
DataField
=
"ProjectName"
HeaderText
=
"ProjectName"
SortExpression
=
"ProjectName"
ReadOnly
=
"false"
/><
br
> <
asp:TemplateField
HeaderText
=
"Assigned Users"
><
br
> <
ItemTemplate
><
br
> <
telerik:RadComboBox
runat
=
"server"
ID
=
"Users"
EnableCheckAllItemsCheckBox
=
"true"
<br> CheckBoxes="true" DataTextField="UserName" DataValueField="UserID" OnLoad="Users_Load" ><
br
><
br
><
br
><
br
> </
telerik:RadComboBox
><
br
><
br
> </
ItemTemplate
><
br
> </
asp:TemplateField
><
br
><
br
> <
asp:TemplateField
HeaderText
=
"Deadline"
><
br
><
br
> <
ItemTemplate
><
br
> <
telerik:RadDatePicker
EnableViewState
=
"false"
MinDate
=
"01/01/1850"
<br> MaxDate="01/01/2100" Skin="Telerik" ID="DeadlineDate"<
br
> DbSelectedDate='<%# DataBinder.Eval(Container.DataItem, "DeadlineDate") %>'<
br
> runat="server"><
br
> </
telerik:RadDatePicker
><
br
><
br
><
br
> </
ItemTemplate
><
br
><
br
> </
asp:TemplateField
><
br
> <
br
> <
br
> <
asp:TemplateField
HeaderText
=
"Note"
><
br
> <
ItemTemplate
><
br
> <
asp:TextBox
ID
=
"Note"
runat
=
"server"
Text='<%# DataBinder.Eval(Container.DataItem,"Note") %>' TextMode="MultiLine" Width="160px"><
br
> </
asp:TextBox
><
br
> </
ItemTemplate
><
br
> </
asp:TemplateField
><
br
><
br
> <
asp:CheckboxField
DataField
=
"IsActive"
HeaderText
=
"IsActive"
SortExpression
=
"IsActive"
ReadOnly
=
"false"
/><
br
> <
br
> <
asp:CommandField
ShowEditButton
=
"True"
ButtonType
=
"Button"
EditText
=
"Update"
/><
br
> <
asp:CommandField
ShowInsertButton
=
"True"
ButtonType
=
"Button"
InsertText
=
"Insert"
/><
br
> <
asp:CommandField
ShowCancelButton
=
"true"
ButtonType
=
"Button"
CancelText
=
"Cancel"
/><
br
><
br
> </
Fields
><
br
> <
br
> </
asp:DetailsView
><
br
> <
br
> </
div
> <
br
><
br
> </
form
><
br
><
br
> </
body
><
br
><
br
></
html
>
CodeBehind
using
System;<br>
using
System.Collections.Generic;<br>
using
System.Data;<br>
using
System.Data.SqlClient;<br>
using
System.Linq;<br>
using
System.Web;<br>
using
System.Web.UI;<br>
using
System.Web.UI.WebControls;<br>
using
Telerik.Web.UI;<br><br>
namespace
ArconCalendar<br>{<br>
public
partial
class
EditFormCS : System.Web.UI.Page<br> {<br>
protected
override
void
OnInit(EventArgs e)<br> {<br>
base
.OnInit(e);<br> <br> <br>
if
(Request.QueryString[
"taskid"
] ==
null
)<br> {<br> DetailsView1.DefaultMode = DetailsViewMode.Insert;<br> }<br>
else
<br> {<br> DetailsView1.DataSource = DB.GetData(
"Tasks_Select"
,
"@TaskID"
, Request.QueryString[
"taskid"
]);<br> DetailsView1.DefaultMode = DetailsViewMode.Edit;<br> DetailsView1.DataBind();<br> <br> }<br>
this
.Page.Title =
"Editing record"
;<br> }<br><br>
protected
void
DetailsView1_ItemCommand(
object
sender, DetailsViewCommandEventArgs e)<br> {<br>
if
(e.CommandName ==
"Edit"
)<br> {<br><br> ClientScript.RegisterStartupScript(Page.GetType(),
"mykey"
,
"CloseAndRebind();"
,
true
);<br> }<br>
else
if
(e.CommandName ==
"Insert"
)<br> {<br> ClientScript.RegisterStartupScript(Page.GetType(),
"mykey"
,
"CloseAndRebind('navigateToInserted');"
,
true
);<br> }<br>
else
<br> {<br>
// ClientScript.RegisterStartupScript(Page.GetType(), "mykey", "CancelEdit();", true);<br> }<br> }<br><br> protected void DetailsView1_ItemUpdating(object sender, DetailsViewUpdateEventArgs e)<br> {<br> /*<br> //logic to truncate long string to prevent SQL error<br> for (int i = 1; i < 4; i++)<br> {<br> string val = e.NewValues[i - 1].ToString();<br> int maxLength = i * 10;<br> if (val.Length > maxLength) e.NewValues[i - 1] = val.Substring(0, maxLength);<br> }*/<br><br> string ids = ConcatUserID();<br><br> using (var conn = new SqlConnection(DB.connString))<br> using (var command = new SqlCommand("Tasks_Update", conn) { CommandType = CommandType.StoredProcedure })<br> {<br> conn.Open();<br> SqlDataAdapter da = new SqlDataAdapter(command);<br> command.Parameters.Add(new SqlParameter("@TaskID", e.Keys[0].ToString()));<br> command.Parameters.Add(new SqlParameter("@UserIDs",ids ));<br> <br> command.Parameters.Add(new SqlParameter("@Title",e.NewValues["Title"]));<br> command.Parameters.Add(new SqlParameter("@ProjectName", e.NewValues["ProjectName"]));<br><br> command.Parameters.Add(new SqlParameter("@DeadlineDate", (DetailsView1.FindControl("DeadlineDate") as RadDatePicker).SelectedDate));<br> command.Parameters.Add(new SqlParameter("@IsActive", e.NewValues["IsActive"]));<br><br> command.Parameters.Add(new SqlParameter("@Note", (DetailsView1.FindControl("Note") as TextBox).Text));<br> <br> command.ExecuteNonQuery();<br><br><br><br><br> }<br><br><br><br><br> }<br><br> private string ConcatUserID()<br> {<br> RadComboBox d = (DetailsView1.FindControl("Users") as RadComboBox);<br> string ids = "";<br> string separator = ";";<br><br><br> foreach (RadComboBoxItem item in d.Items)<br> {<br> if(item.Checked==true)<br> ids += item.Value + separator;<br><br> }<br> return ids;<br> }<br><br> protected void DetailsView1_ItemInserting(object sender, DetailsViewInsertEventArgs e)<br> {<br> string ids = ConcatUserID();<br> using (var conn = new SqlConnection(DB.connString))<br> using (var command = new SqlCommand("Tasks_Insert", conn) { CommandType = CommandType.StoredProcedure })<br> {<br> conn.Open();<br> SqlDataAdapter da = new SqlDataAdapter(command);<br> <br> command.Parameters.Add(new SqlParameter("@UserIDs", ids));<br><br> command.Parameters.Add(new SqlParameter("@Title", e.Values["Title"]));<br> command.Parameters.Add(new SqlParameter("@ProjectName", e.Values["ProjectName"]));<br><br> command.Parameters.Add(new SqlParameter("@DeadlineDate", (DetailsView1.FindControl("DeadlineDate") as RadDatePicker).SelectedDate));<br> command.Parameters.Add(new SqlParameter("@IsActive", e.Values["IsActive"]));<br><br> command.Parameters.Add(new SqlParameter("@Note", (DetailsView1.FindControl("Note") as TextBox).Text));<br><br> command.ExecuteNonQuery();<br><br><br><br><br> }<br><br> }<br><br> <br><br> protected void Users_Load(object sender, EventArgs e)<br> {<br> if (!IsPostBack)<br> {<br> RadComboBox rcb = (sender as RadComboBox);<br> DataTable dt = DB.GetData("UsersToTask_Select");<br> rcb.DataSource = dt;<br> rcb.DataBind();<br><br> <br> if (DetailsView1.CurrentMode == DetailsViewMode.Edit)<br> {<br> List<Guid> list = (from row in dt.AsEnumerable()<br> where row.Field<Guid?>("TaskID") ==Guid.Parse( DetailsView1.DataKey.Value.ToString())<br> select row.Field<Guid>("UserId")).ToList<Guid>();<br> foreach (RadComboBoxItem r in rcb.Items)<br> {<br> if (list.Contains(Guid.Parse(r.Value))) r.Checked = true;<br> <br> }<br><br> }<br> }<br> }<br><br> protected void DetailsView1_ModeChanging(object sender, DetailsViewModeEventArgs e)<br> {<br> if (e.CancelingEdit==true)<br> {<br> <br> ClientScript.RegisterStartupScript(Page.GetType(), "mykey", "CancelEdit();", true);<br> <br> }<br> else if (e.NewMode == DetailsViewMode.Edit)<br> {<br> ClientScript.RegisterStartupScript(Page.GetType(), "mykey", "CloseAndRebind();", true);<br> }<br> else if (e.NewMode == DetailsViewMode.Insert)<br> {<br> ClientScript.RegisterStartupScript(Page.GetType(), "mykey", "CloseAndRebind('navigateToInserted');", true);<br> }<br><br> }<br><br> <br><br> <br> }<br>}<br>