Hi,
I'm using 2 grids on one page.
Selecting a row in the upper grid will show data in the lower grid.
This seems to work fine the way it is now.
In the lower grid I would like to use a command or button column to edit and delete items.
I've implemented these, but when clicking on of them the program will crash with the following error:
The solution is that you need to use the NeedDataSource event, but I don't know how.
When using this, clicking a row on the upper grid will not update the lower grid.
So how can I implement this so the edit/delete buttons functions will also work?
Thanks,
Egbert
I'm using 2 grids on one page.
Selecting a row in the upper grid will show data in the lower grid.
This seems to work fine the way it is now.
In the lower grid I would like to use a command or button column to edit and delete items.
I've implemented these, but when clicking on of them the program will crash with the following error:
Invalid postback or callback argument. Event validation is enabled using <pages enableEventValidation="true"/> in configuration or <%@ Page EnableEventValidation="true" %> in a page. For security purposes, this feature verifies that arguments to postback or callback events originate from the server control that originally rendered them. If the data is valid and expected, use the ClientScriptManager.RegisterForEventValidation method in order to register the postback or callback data for validation.
The solution is that you need to use the NeedDataSource event, but I don't know how.
When using this, clicking a row on the upper grid will not update the lower grid.
So how can I implement this so the edit/delete buttons functions will also work?
Thanks,
Egbert
<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true"
CodeFile="Tasks.aspx.cs" Inherits="Tasks" %>
<%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %>
<
asp:Content
ID
=
"Content1"
ContentPlaceHolderID
=
"head"
runat
=
"Server"
>
</
asp:Content
>
<
asp:Content
ID
=
"Content2"
ContentPlaceHolderID
=
"ContentPlaceHolder1"
runat
=
"Server"
>
<
div
style
=
"padding: 1%; width: 98%"
>
<
telerik:RadPanelBar
ID
=
"RadPanelBar1"
runat
=
"server"
Width
=
"100%"
>
<
Items
>
<
telerik:RadPanelItem
Text
=
"Task details"
runat
=
"server"
>
<
Items
>
<
telerik:RadPanelItem
runat
=
"server"
>
<
ItemTemplate
>
<
table
align
=
"center"
>
<
tr
>
<
td
>
Project Title
</
td
>
<
td
>
Project Nr
</
td
>
<
td
>
</
td
>
</
tr
>
<
tr
>
<
td
>
<
telerik:RadTextBox
ID
=
"RadTextBoxProjectTitle"
runat
=
"server"
Width
=
"300px"
Enabled
=
"false"
>
</
telerik:RadTextBox
>
</
td
>
<
td
>
<
telerik:RadTextBox
ID
=
"RadTextBoxProjectNr"
runat
=
"server"
Width
=
"200px"
Enabled
=
"false"
>
</
telerik:RadTextBox
>
</
td
>
<
td
>
</
td
>
</
tr
>
<
tr
>
<
td
>
<
br
/>
</
td
>
<
td
>
</
td
>
<
td
>
</
td
>
</
tr
>
<
tr
>
<
td
>
Title
</
td
>
<
td
>
Nr
</
td
>
<
td
>
Subsidy
</
td
>
</
tr
>
<
tr
>
<
td
>
<
telerik:RadTextBox
ID
=
"RadTextBoxTitle"
runat
=
"server"
Width
=
"300px"
>
</
telerik:RadTextBox
>
</
td
>
<
td
>
<
telerik:RadTextBox
ID
=
"RadTextBoxNr"
runat
=
"server"
Width
=
"200px"
>
</
telerik:RadTextBox
>
</
td
>
<
td
>
<
telerik:RadDropDownList
ID
=
"RadDropDownSubsidy"
runat
=
"server"
Width
=
"200px"
>
</
telerik:RadDropDownList
>
</
td
>
</
tr
>
<
tr
>
<
td
>
Description
</
td
>
<
td
align
=
"right"
>
Estimated Hours
<
telerik:RadMaskedTextBox
ID
=
"RadMaskedTextBox1"
runat
=
"server"
Width
=
"60px"
>
</
telerik:RadMaskedTextBox
>
</
td
>
<
td
align
=
"right"
>
% Done
<
telerik:RadNumericTextBox
ID
=
"RadNumericTextBox1"
runat
=
"server"
Width
=
"60px"
>
</
telerik:RadNumericTextBox
>
</
td
>
</
tr
>
<
tr
>
<
td
colspan
=
"3"
>
<
telerik:RadTextBox
ID
=
"RadTextBox1"
runat
=
"server"
TextMode
=
"MultiLine"
Height
=
"60"
Width
=
"100%"
>
</
telerik:RadTextBox
>
</
td
>
<
td
>
</
td
>
<
td
>
</
td
>
</
tr
>
</
table
>
</
ItemTemplate
>
</
telerik:RadPanelItem
>
</
Items
>
</
telerik:RadPanelItem
>
</
Items
>
</
telerik:RadPanelBar
>
<
br
/>
<
b
>Projects</
b
>
<
telerik:RadGrid
ID
=
"RadGridProjects"
runat
=
"server"
AllowPaging
=
"True"
ActiveItemStyle-Wrap
=
"True"
OnItemCreated
=
"RadGrid1_ItemCreated"
OnPreRender
=
"RadGrid1_ItemPreRender"
ShowStatusBar
=
"true"
AllowSorting
=
"True"
AllowMultiRowEdit
=
"true"
AutoGenerateColumns
=
"false"
OnSelectedIndexChanged
=
"RadGridProjects_SelectedIndexChanged"
OnNeedDataSource
=
"RadGridProjects_NeedDataSource"
>
<
MasterTableView
PageSize
=
"5"
>
<
Columns
>
<
telerik:GridButtonColumn
Text
=
"Select"
CommandName
=
"Select"
>
</
telerik:GridButtonColumn
>
<%-- <
telerik:GridButtonColumn
Text
=
"Deselect"
CommandName
=
"Deselect"
>
</
telerik:GridButtonColumn
>
--%>
<
telerik:GridTemplateColumn
UniqueName
=
"CheckBoxTemplateColumn"
Display
=
"false"
>
<
HeaderTemplate
>
<
asp:CheckBox
ID
=
"headerChkbox"
OnCheckedChanged
=
"ToggleSelectedState"
AutoPostBack
=
"True"
runat
=
"server"
></
asp:CheckBox
>
</
HeaderTemplate
>
<
ItemTemplate
>
<
asp:CheckBox
ID
=
"CheckBox1"
OnCheckedChanged
=
"ToggleRowSelection"
AutoPostBack
=
"True"
runat
=
"server"
></
asp:CheckBox
>
</
ItemTemplate
>
</
telerik:GridTemplateColumn
>
<
telerik:GridBoundColumn
DataField
=
"id"
HeaderText
=
"ID"
UniqueName
=
"id"
Display
=
"false"
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"nr"
HeaderText
=
"Nr"
UniqueName
=
"nr"
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"title"
HeaderText
=
"Title"
UniqueName
=
"title"
>
</
telerik:GridBoundColumn
>
</
Columns
>
</
MasterTableView
>
<
ClientSettings
EnableRowHoverStyle
=
"true"
EnablePostBackOnRowClick
=
"true"
>
</
ClientSettings
>
</
telerik:RadGrid
>
<
p
>
</
p
>
<
b
>Tasks</
b
>
<
telerik:RadGrid
ID
=
"RadGridTasks"
runat
=
"server"
AllowPaging
=
"True"
ActiveItemStyle-Wrap
=
"True"
OnItemCreated
=
"RadGridTasks_ItemCreated"
OnPreRender
=
"RadGridTasks_ItemPreRender"
ShowStatusBar
=
"true"
AllowSorting
=
"True"
AllowMultiRowEdit
=
"true"
AutoGenerateColumns
=
"false"
OnSelectedIndexChanged
=
"RadGridTasks_SelectedIndexChanged"
AllowAutomaticInserts
=
"true"
OnEditCommand
=
"RadGridTasks_EditCommand"
OnItemCommand
=
"RadGridTasks_ItemCommand"
OnNeedDataSource
=
"RadGridTasks_NeedDataSource"
>
<
MasterTableView
PageSize
=
"10"
NoMasterRecordsText
=
"No data"
>
<
Columns
>
<
telerik:GridButtonColumn
UniqueName
=
"EditCommand"
CommandName
=
"Edit"
ButtonType
=
"PushButton"
Text
=
"Edit"
>
</
telerik:GridButtonColumn
>
<
telerik:GridEditCommandColumn
ButtonType
=
"ImageButton"
UniqueName
=
"EditCommandColumn"
>
<
ItemStyle
CssClass
=
"MyImageButton"
></
ItemStyle
>
</
telerik:GridEditCommandColumn
>
<
telerik:GridButtonColumn
Text
=
"Select"
CommandName
=
"Select"
>
</
telerik:GridButtonColumn
>
<%-- <
telerik:GridButtonColumn
Text
=
"Deselect"
CommandName
=
"Deselect"
>
</
telerik:GridButtonColumn
>
--%>
<
telerik:GridTemplateColumn
UniqueName
=
"CheckBoxTemplateColumn"
Display
=
"false"
>
<
HeaderTemplate
>
<
asp:CheckBox
ID
=
"headerChkbox_RadGRidTasks"
OnCheckedChanged
=
"RadGridTasks_ToggleSelectedState"
AutoPostBack
=
"True"
runat
=
"server"
></
asp:CheckBox
>
</
HeaderTemplate
>
<
ItemTemplate
>
<
asp:CheckBox
ID
=
"CheckBox_RadGRidTasks"
OnCheckedChanged
=
"RadGridTasks_ToggleRowSelection"
AutoPostBack
=
"True"
runat
=
"server"
></
asp:CheckBox
>
</
ItemTemplate
>
</
telerik:GridTemplateColumn
>
<
telerik:GridBoundColumn
DataField
=
"id"
HeaderText
=
"ID"
UniqueName
=
"idTask"
Display
=
"false"
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"nr"
HeaderText
=
"Nr"
UniqueName
=
"nrTask"
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"title"
HeaderText
=
"Title"
UniqueName
=
"titleTask"
>
</
telerik:GridBoundColumn
>
</
Columns
>
</
MasterTableView
>
<
ClientSettings
EnableRowHoverStyle
=
"true"
>
</
ClientSettings
>
</
telerik:RadGrid
>
<
p
>
</
p
>
<
center
>
<
telerik:RadButton
ID
=
"RadButtonAddTask"
runat
=
"server"
Text
=
"Add Task"
OnClick
=
"RadButtonAddTask_Click"
>
</
telerik:RadButton
>
</
center
>
<
telerik:RadWindow
ID
=
"RadWindowWarning"
VisibleOnPageLoad
=
"false"
Title
=
"Warning"
runat
=
"server"
Modal
=
"true"
AutoSize
=
"false"
Width
=
"400"
Height
=
"160"
VisibleTitlebar
=
"true"
VisibleStatusbar
=
"False"
Behaviors
=
"None"
>
<
ContentTemplate
>
<
p
style
=
"text-align: center;"
>
<
asp:Label
runat
=
"server"
ID
=
"labelWindow"
Text
=
"Please select a project!"
></
asp:Label
>
</
p
>
<
p
style
=
"padding: 10px; text-align: center;"
>
<
telerik:RadButton
ID
=
"ButtonWindowOK"
Text
=
"OK"
AutoPostBack
=
"true"
runat
=
"server"
OnClick
=
"ButtonWindowOK_Click"
/>
</
p
>
</
ContentTemplate
>
</
telerik:RadWindow
>
</
div
>
</
asp:Content
>
using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Web;
using
System.Web.UI;
using
System.Web.UI.WebControls;
using
Telerik.Web.UI;
using
Ris.Classes;
using
System.Data;
public
partial
class
Tasks : System.Web.UI.Page
{
private
string
userID =
string
.Empty;
private
string
projectID =
string
.Empty;
protected
void
Page_Load(
object
sender, EventArgs e)
{
if
(Session.Count == 0 || Session[
"Login"
] ==
null
|| Session[
"Login"
].ToString() ==
"No"
)
{
Response.Redirect(
"Login.aspx"
);
}
this
.userID = Session[
"UserID"
].ToString();
this
.projectID = Session[
"ProjectID"
].ToString();
this
.ShowProjects();
if
(
this
.projectID !=
"0"
)
{
this
.ShowTasks();
}
}
protected
void
RadGridTasks_NeedDataSource(
object
sender, EventArgs e)
{
// this.ShowTasks();
}
protected
void
RadGridProjects_NeedDataSource(
object
sender, EventArgs e)
{
// this.ShowProjects();
}
private
void
ShowProjects()
{
DbProjects dbProject =
new
DbProjects();
DataSet dataSet = dbProject.GetAllProjects(DbProjects.prjSelection.User,
this
.userID);
this
.RadGridProjects.DataSource = dataSet;
this
.RadGridProjects.DataBind();
}
private
void
ShowTasks()
{
this
.projectID = Session[
"ProjectID"
].ToString();
if
(
this
.projectID ==
"0"
)
{
return
;
}
DbTasks dbTask =
new
DbTasks();
DataSet dataSet = dbTask.GetAllTasks(DbTasks.tskSelection.User,
this
.projectID,
this
.userID);
this
.RadGridTasks.DataSource = dataSet;
this
.RadGridTasks.DataBind();
this
.RadGridProjects.Rebind();
}
protected
void
RadGridProjects_SelectedIndexChanged(
object
sender, EventArgs e)
{
GridDataItem dataItem = (GridDataItem)RadGridProjects.SelectedItems[0];
if
(dataItem !=
null
)
{
Session[
"ProjectID"
] = dataItem[
"id"
].Text;
this
.ShowTasks();
}
}
protected
void
ToggleSelectedState(
object
sender, EventArgs e)
{
CheckBox headerCheckBox = (sender
as
CheckBox);
foreach
(GridDataItem dataItem
in
RadGridProjects.MasterTableView.Items)
{
(dataItem.FindControl(
"CheckBox1"
)
as
CheckBox).Checked = headerCheckBox.Checked;
dataItem.Selected = headerCheckBox.Checked;
}
}
protected
void
RadGridTasks_ToggleSelectedState(
object
sender, EventArgs e)
{
CheckBox headerCheckBox = (sender
as
CheckBox);
foreach
(GridDataItem dataItem
in
RadGridTasks.MasterTableView.Items)
{
(dataItem.FindControl(
"CheckBox1"
)
as
CheckBox).Checked = headerCheckBox.Checked;
dataItem.Selected = headerCheckBox.Checked;
}
}
protected
void
ToggleRowSelection(
object
sender, EventArgs e)
{
((sender
as
CheckBox).NamingContainer
as
GridItem).Selected = (sender
as
CheckBox).Checked;
}
protected
void
RadGridTasks_ToggleRowSelection(
object
sender, EventArgs e)
{
((sender
as
CheckBox).NamingContainer
as
GridItem).Selected = (sender
as
CheckBox).Checked;
}
protected
void
RadGrid1_ItemCreated(
object
sender, GridItemEventArgs e)
{
if
(e.Item
is
GridDataItem)
{
e.Item.PreRender +=
new
EventHandler(RadGrid1_ItemPreRender);
}
}
protected
void
RadGridTasks_ItemCreated(
object
sender, GridItemEventArgs e)
{
if
(e.Item
is
GridDataItem)
{
e.Item.PreRender +=
new
EventHandler(RadGridTasks_ItemPreRender);
}
}
protected
void
RadGridTasks_SelectedIndexChanged(
object
sender, EventArgs e)
{
GridDataItem dataItem = (GridDataItem)RadGridTasks.SelectedItems[0];
if
(dataItem !=
null
)
{
//Session["ProjectID"] = dataItem["id"].Text;
//this.ShowTasks();
}
}
protected
void
RadGrid1_ItemPreRender(
object
sender, EventArgs e)
{
try
{
((sender
as
GridDataItem)[
"CheckBoxTemplateColumn"
].FindControl(
"CheckBox1"
)
as
CheckBox).Checked = (sender
as
GridDataItem).Selected;
}
catch
{
}
}
protected
void
RadGridTasks_ItemPreRender(
object
sender, EventArgs e)
{
try
{
((sender
as
GridDataItem)[
"CheckBoxTemplateColumn"
].FindControl(
"CheckBox1"
)
as
CheckBox).Checked = (sender
as
GridDataItem).Selected;
}
catch
{
}
}
protected
void
ButtonWindowOK_Click(
object
sender, EventArgs e)
{
this
.RadWindowWarning.VisibleOnPageLoad =
false
;
}
protected
void
RadGridTasks_EditCommand(
object
source, GridCommandEventArgs e)
{
if
(e.Item
is
GridDataItem)
{
GridDataItem item = (GridDataItem)e.Item;
//string id = item.GetDataKeyValue("id").ToString();
//string id = item["id"].ToString();
}
}
protected
void
RadGridTasks_ItemCommand(
object
source, GridCommandEventArgs e)
{
if
(e.Item
is
GridDataItem)
{
GridDataItem item = (GridDataItem)e.Item;
int
index = e.Item.ItemIndex;
// string id = item.GetDataKeyValue("id").ToString();
//string id = item["id"].ToString();
}
}
protected
void
RadButtonAddTask_Click(
object
sender, EventArgs e)
{
if
(Session[
"ProjectID"
].ToString() ==
"0"
)
{
this
.RadWindowWarning.VisibleOnPageLoad =
true
;
}
else
{
Session[
"EditTaskType"
] = EditType.Add;
Response.Redirect(
"TaskItem.aspx"
);
}
}
}