Hello to all
I have built the following scenario.
There is one table called "centers" which holds data for some public centers across a town.
There is another table called services having ID and Name of the Service.
The centers has many services (e.g. car rental, bike rental e.t.c.)
So I made another table (CenterServices), which holds the IDs of Centers and Services (to simulate the one to many relationship)
I built a page with a master and a separate detail grid, using your example in demos.
http://demos.telerik.com/aspnet-ajax/grid/examples/programming/selectedvalue/defaultvb.aspx
I added edit and delete buttons to the detail grid.
The problem is that I can edit the record of the details grid, but I cannot delete it.
Can anyone help me please?
The sqldatasource is working fine (I think).
May be something is missing from the grid or the code.
The code page is the following:
Thanks in advanced
I have built the following scenario.
There is one table called "centers" which holds data for some public centers across a town.
There is another table called services having ID and Name of the Service.
The centers has many services (e.g. car rental, bike rental e.t.c.)
So I made another table (CenterServices), which holds the IDs of Centers and Services (to simulate the one to many relationship)
I built a page with a master and a separate detail grid, using your example in demos.
http://demos.telerik.com/aspnet-ajax/grid/examples/programming/selectedvalue/defaultvb.aspx
I added edit and delete buttons to the detail grid.
The problem is that I can edit the record of the details grid, but I cannot delete it.
Can anyone help me please?
The sqldatasource is working fine (I think).
May be something is missing from the grid or the code.
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="ServiceCenter.aspx.vb" Inherits="ServiceCenter" %>
<%@ Register TagPrefix="telerik" Namespace="Telerik.Web.UI" Assembly="Telerik.Web.UI" %>
<!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"
>
<
div
>
<
telerik:RadScriptManager
ID
=
"RadScriptManager"
runat
=
"server"
></
telerik:RadScriptManager
>
<
strong
>Centers:</
strong
>
<
telerik:RadAjaxManager
ID
=
"RadAjaxManager1"
runat
=
"server"
>
<
ajaxsettings
>
<
telerik:AjaxSetting
AjaxControlID
=
"RadGrid1"
>
<
UpdatedControls
>
<
telerik:AjaxUpdatedControl
ControlID
=
"RadGrid1"
/>
<
telerik:AjaxUpdatedControl
ControlID
=
"RadGrid2"
/>
</
UpdatedControls
>
</
telerik:AjaxSetting
>
<
telerik:AjaxSetting
AjaxControlID
=
"RadGrid2"
>
<
UpdatedControls
>
<
telerik:AjaxUpdatedControl
ControlID
=
"RadGrid2"
/>
</
UpdatedControls
>
</
telerik:AjaxSetting
>
</
ajaxsettings
>
</
telerik:RadAjaxManager
>
<
telerik:RadGrid
ID
=
"RadGrid1"
runat
=
"server"
AllowPaging
=
"True"
PageSize
=
"5"
DataSourceID
=
"SqlDataSource1"
GridLines
=
"None"
width
=
"95%"
CellSpacing
=
"0"
>
<
clientsettings
allowkeyboardnavigation
=
"true"
enablepostbackonrowclick
=
"true"
>
<
Selecting
AllowRowSelect
=
"true"
/>
</
clientsettings
>
<
mastertableview
datakeynames
=
"Center_ID"
>
<
CommandItemSettings
ExportToPdfText
=
"Export to PDF"
></
CommandItemSettings
>
<
RowIndicatorColumn
FilterControlAltText
=
"Filter RowIndicator column"
></
RowIndicatorColumn
>
<
ExpandCollapseColumn
FilterControlAltText
=
"Filter ExpandColumn column"
></
ExpandCollapseColumn
>
<
EditFormSettings
>
<
EditColumn
FilterControlAltText
=
"Filter EditCommandColumn column"
></
EditColumn
>
</
EditFormSettings
>
<
PagerStyle
AlwaysVisible
=
"True"
/>
</
mastertableview
>
<
pagerstyle
mode
=
"NextPrevAndNumeric"
AlwaysVisible
=
"True"
/>
<
FilterMenu
EnableImageSprites
=
"False"
></
FilterMenu
>
<
HeaderContextMenu
CssClass
=
"GridContextMenu GridContextMenu_Default"
></
HeaderContextMenu
>
</
telerik:RadGrid
>
<
br
/>
<
br
/>
<
strong
>Services:</
strong
>
<
telerik:RadGrid
ID
=
"RadGrid2"
runat
=
"server"
AllowAutomaticDeletes
=
"True"
AutoGenerateColumns
=
"False"
AllowAutomaticInserts
=
"True"
AllowAutomaticUpdates
=
"True"
AllowPaging
=
"True"
CellSpacing
=
"0"
DataSourceID
=
"SqlDataSource2"
ShowStatusBar
=
"True"
GridLines
=
"None"
ShowFooter
=
"True"
Width
=
"95%"
>
<
MasterTableView
DataSourceID
=
"SqlDataSource2"
Width
=
"100%"
CommandItemDisplay
=
"TopAndBottom"
DataKeyNames
=
"CenterServices_ID"
>
<
CommandItemSettings
ExportToPdfText
=
"Export to PDF"
></
CommandItemSettings
>
<
RowIndicatorColumn
FilterControlAltText
=
"Filter RowIndicator column"
>
<
HeaderStyle
Width
=
"20px"
></
HeaderStyle
>
</
RowIndicatorColumn
>
<
ExpandCollapseColumn
FilterControlAltText
=
"Filter ExpandColumn column"
>
<
HeaderStyle
Width
=
"20px"
></
HeaderStyle
>
</
ExpandCollapseColumn
>
<
Columns
>
<
telerik:GridEditCommandColumn
ButtonType
=
"ImageButton"
UniqueName
=
"EditCommandColumn"
>
<
ItemStyle
CssClass
=
"MyImageButton"
/>
</
telerik:GridEditCommandColumn
>
<
telerik:GridTemplateColumn
FilterControlAltText
=
"Filter TemplateColumn column"
HeaderText
=
"Service Name"
UniqueName
=
"TemplateColumn"
>
<
EditItemTemplate
>
<
telerik:RadComboBox
ID
=
"RadComboBox1"
Runat
=
"server"
DataSourceID
=
"SqlDataSource3"
DataTextField
=
"Service_Name"
DataValueField
=
"Service_ID"
SelectedValue='<%# Bind("CenterServices_Service") %>'>
</
telerik:RadComboBox
>
</
EditItemTemplate
>
<
InsertItemTemplate
>
<
telerik:RadComboBox
ID
=
"RadComboBox2"
Runat
=
"server"
DataSourceID
=
"SqlDataSource3"
DataTextField
=
"Service_Name"
DataValueField
=
"Service_ID"
SelectedValue='<%# Bind("CenterServices_Service") %>'>
</
telerik:RadComboBox
>
</
InsertItemTemplate
>
<
ItemTemplate
>
<
asp:Label
ID
=
"Label1"
runat
=
"server"
Text='<%# Eval("Service_Name") %>'></
asp:Label
>
</
ItemTemplate
>
</
telerik:GridTemplateColumn
>
<
telerik:GridTemplateColumn
FilterControlAltText
=
"Filter TemplateColumn1 column"
HeaderText
=
"Center"
UniqueName
=
"TemplateColumn1"
>
<
EditItemTemplate
>
<
asp:Label
ID
=
"Label2"
runat
=
"server"
Text='<%# Bind("CenterServices_Center") %>'></
asp:Label
>
</
EditItemTemplate
>
<
InsertItemTemplate
>
<
telerik:RadComboBox
ID
=
"RadComboBox3"
Runat
=
"server"
DataSourceID
=
"SqlDataSource4"
DataTextField
=
"Center_Code"
DataValueField
=
"Center_ID"
SelectedValue='<%# Bind("CenterServices_Center") %>'>
</
telerik:RadComboBox
>
</
InsertItemTemplate
>
</
telerik:GridTemplateColumn
>
<
telerik:GridButtonColumn
ConfirmText
=
"Delete this product?"
ConfirmDialogType
=
"RadWindow"
ConfirmTitle
=
"Delete"
ButtonType
=
"ImageButton"
CommandName
=
"Delete"
Text
=
"Delete"
UniqueName
=
"DeleteColumn"
>
<
ItemStyle
HorizontalAlign
=
"Center"
CssClass
=
"MyImageButton"
/>
</
telerik:GridButtonColumn
>
</
Columns
>
<
EditFormSettings
>
<
EditColumn
FilterControlAltText
=
"Filter EditCommandColumn column"
></
EditColumn
>
</
EditFormSettings
>
<
PagerStyle
AlwaysVisible
=
"True"
/>
</
MasterTableView
>
<
FilterMenu
EnableImageSprites
=
"False"
></
FilterMenu
>
<
HeaderContextMenu
CssClass
=
"GridContextMenu GridContextMenu_Default"
></
HeaderContextMenu
>
</
telerik:RadGrid
>
<
telerik:RadWindowManager
ID
=
"RadWindowManager1"
runat
=
"server"
></
telerik:RadWindowManager
>
<
br
/>
<
br
/>
<
strong
>Orders details:</
strong
>
<
asp:SqlDataSource
ID
=
"SqlDataSource1"
ConnectionString
=
"xxxxxxxxxxxx"
ProviderName
=
"System.Data.SqlClient"
SelectCommand
=
"SELECT Centers.Center_ID, countries.CO_Name, Centers.Center_Region, Centers.Center_City, Centers.Center_Street_Number, Centers.Center_ZipCode, Centers.Center_WorkingHours, Centers.Center_Code FROM Centers INNER JOIN countries ON Centers.Center_Country = countries.CO_id"
runat
=
"server"
></
asp:SqlDataSource
>
<
asp:SqlDataSource
ID
=
"SqlDataSource2"
ConnectionString
=
"xxxxxxxxxxxx"
ProviderName
=
"System.Data.SqlClient"
SelectCommand
=
"SELECT CenterServices.CenterServices_ID, CenterServices.CenterServices_Center, CenterServices.CenterServices_Service, Services.Service_Name FROM CenterServices INNER JOIN Services ON CenterServices.CenterServices_Service = Services.Service_ID WHERE (CenterServices.CenterServices_Center = @CenterServices_Center)"
runat
=
"server"
DeleteCommand
=
"DELETE FROM CenterServices WHERE (CenterServices_ID = @CenterServices_ID)"
InsertCommand
=
"INSERT INTO [CenterServices] ([CenterServices_Center], [CenterServices_Service]) VALUES (@CenterServices_Center, @CenterServices_Service)"
UpdateCommand
=
"UPDATE [CenterServices] SET [CenterServices_Center] = @CenterServices_Center, [CenterServices_Service] = @CenterServices_Service WHERE [CenterServices_ID] = @CenterServices_ID"
>
<
DeleteParameters
>
<
asp:Parameter
Name
=
"CenterServices_ID"
Type
=
"Int32"
/>
</
DeleteParameters
>
<
InsertParameters
>
<
asp:Parameter
Name
=
"CenterServices_Center"
Type
=
"Int32"
/>
<
asp:Parameter
Name
=
"CenterServices_Service"
Type
=
"Int32"
/>
</
InsertParameters
>
<
SelectParameters
>
<
asp:ControlParameter
ControlID
=
"RadGrid1"
Name
=
"CenterServices_Center"
PropertyName
=
"SelectedValue"
Type
=
"Int32"
/>
</
SelectParameters
>
<
UpdateParameters
>
<
asp:Parameter
Name
=
"CenterServices_Center"
Type
=
"Int32"
/>
<
asp:Parameter
Name
=
"CenterServices_Service"
Type
=
"Int32"
/>
<
asp:Parameter
Name
=
"CenterServices_ID"
Type
=
"Int32"
/>
</
UpdateParameters
>
</
asp:SqlDataSource
>
</
div
>
<
asp:SqlDataSource
ID
=
"SqlDataSource3"
runat
=
"server"
ConnectionString
=
"xxxxxxxxxxxx"
ProviderName
=
"System.Data.SqlClient"
SelectCommand
=
"SELECT * FROM [Services]"
>
</
asp:SqlDataSource
>
<
asp:SqlDataSource
ID
=
"SqlDataSource4"
runat
=
"server"
ConnectionString
=
"xxxxxxxxxxxx"
ProviderName
=
"System.Data.SqlClient"
SelectCommand
=
"SELECT [Center_ID], [Center_Code] FROM [Centers]"
>
</
asp:SqlDataSource
>
<
br
/>
</
form
>
</
body
>
</
html
>
The code page is the following:
Imports System
Imports System.Web.UI.WebControls
Imports Telerik.Web.UI
Partial Class ServiceCenter
Inherits System.Web.UI.Page
Protected Sub Page_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.PreRender
If RadGrid1.SelectedIndexes.Count = 0 Then
RadGrid1.SelectedIndexes.Add(0)
End If
If RadGrid2.SelectedIndexes.Count = 0 Then
RadGrid2.Rebind()
RadGrid2.SelectedIndexes.Add(0)
End If
End Sub
Protected Sub RadGrid1_ItemCommand(ByVal sender As Object, ByVal e As GridCommandEventArgs) Handles RadGrid1.ItemCommand
RadGrid2.SelectedIndexes.Clear()
End Sub
Protected Sub RadGrid2_ItemDeleted(ByVal source As Object, ByVal e As Telerik.Web.UI.GridDeletedEventArgs) Handles RadGrid2.ItemDeleted
Dim item As GridDataItem = DirectCast(e.Item, GridDataItem)
Dim id As String = item.GetDataKeyValue("CenterServices_ID").ToString()
If Not e.Exception Is Nothing Then
e.ExceptionHandled = True
SetMessage("Service Type with ID " + id + " cannot be deleted. Reason: " + e.Exception.Message)
Else
SetMessage("Service Type with ID " + id + " is deleted!")
End If
End Sub
Protected Sub RadGrid2_ItemUpdated(ByVal source As Object, ByVal e As Telerik.Web.UI.GridUpdatedEventArgs) Handles RadGrid2.ItemUpdated
Dim item As GridEditableItem = DirectCast(e.Item, GridEditableItem)
Dim id As String = item.GetDataKeyValue("CenterServices_ID").ToString()
If Not e.Exception Is Nothing Then
e.KeepInEditMode = True
e.ExceptionHandled = True
SetMessage("Service Type with ID " + id + " cannot be updated. Reason: " + e.Exception.Message)
Else
SetMessage("Service Type with ID " + id + " is updated!")
End If
End Sub
Protected Sub RadGrid2_ItemInserted(ByVal source As Object, ByVal e As Telerik.Web.UI.GridInsertedEventArgs) Handles RadGrid2.ItemInserted
If Not e.Exception Is Nothing Then
e.ExceptionHandled = True
e.KeepInInsertMode = True
SetMessage("Service Type cannot be inserted. Reason: " + e.Exception.Message)
Else
SetMessage("New Service Type is inserted!")
End If
End Sub
Private Sub DisplayMessage(ByVal text As String)
RadGrid2.Controls.Add(New LiteralControl(String.Format("<
span
style
=
'color:red'
>{0}</
span
>", text)))
End Sub
Private Sub SetMessage(ByVal message As String)
gridMessage = message
End Sub
Private gridMessage As String = Nothing
Protected Sub RadGrid2_DataBound(ByVal sender As Object, ByVal e As EventArgs) Handles RadGrid2.DataBound
If Not String.IsNullOrEmpty(gridMessage) Then
DisplayMessage(gridMessage)
End If
End Sub
End Class
Thanks in advanced