Hello, I am using LINQ to SQL class in order to retrieve and write data in my SQL. I have a table called Student and Subjects. Student is my parent table and Subjects is my child table. I successfully displays per student his/her subjects with Hierarchical Data Grid. I can add, delete, update, read data in my Subjects using the Property CanUserInsertRows and ShowInsertRow as true. Now my problem is that when I want to add new item in my Student table I cannot click my add new item or it is not clickable. Any help please?
Here's my xaml file
And my class file
How come I cannot click the add new item of my parent table?
Here's my xaml file
<
Window
x:Class
=
"HierarchiyGridSuccess.MainWindow"
xmlns:telerikData
=
"clr-namespace:Telerik.Windows.Data;assembly=Telerik.Windows.Data"
xmlns:telerik
=
"http://schemas.telerik.com/2008/xaml/presentation"
Title
=
"MainWindow"
Height
=
"350"
Width
=
"525"
>
<
Grid
>
<
Grid.RowDefinitions
>
<
RowDefinition
Height
=
"Auto"
/>
<
RowDefinition
Height
=
"Auto"
/>
</
Grid.RowDefinitions
>
<
telerik:RadGridView
Grid.Row
=
"0"
x:Name
=
"rgvData"
ShowInsertRow
=
"True"
AutoGenerateColumns
=
"False"
telerik:Theming.Theme
=
"Windows7"
ItemsSource
=
"{Binding}"
>
<
telerik:RadGridView.ChildTableDefinitions
>
<
telerik:GridViewTableDefinition
/>
</
telerik:RadGridView.ChildTableDefinitions
>
<
telerik:RadGridView.Columns
>
<
telerik:GridViewDataColumn
DataMemberBinding
=
"{Binding StudentID}"
Header
=
"Student ID"
/>
<
telerik:GridViewDataColumn
DataMemberBinding
=
"{Binding StudentFN}"
Header
=
"Student First Name"
/>
<
telerik:GridViewDataColumn
DataMemberBinding
=
"{Binding StudentLN}"
Header
=
"Student Last Name"
/>
</
telerik:RadGridView.Columns
>
<
telerik:RadGridView.HierarchyChildTemplate
>
<
DataTemplate
>
<
telerik:RadGridView
x:Name
=
"RadGridView1"
Loaded
=
"rgvData_Loaded"
AutoGenerateColumns
=
"False"
ShowInsertRow
=
"False"
CanUserInsertRows
=
"False"
ItemsSource
=
"{Binding Subjects}"
ShowGroupPanel
=
"False"
IsReadOnly
=
"False"
>
<
telerik:RadGridView.Columns
>
<
telerik:GridViewDataColumn
DataMemberBinding
=
"{Binding SubjectName}"
Header
=
"Subject Name"
/>
<
telerik:GridViewDataColumn
DataMemberBinding
=
"{Binding SubjectProf}"
Header
=
"Professor"
/>
</
telerik:RadGridView.Columns
>
</
telerik:RadGridView
>
</
DataTemplate
>
</
telerik:RadGridView.HierarchyChildTemplate
>
</
telerik:RadGridView
>
<
Button
Content
=
"Save!"
Width
=
"Auto"
Height
=
"Auto"
Grid.Row
=
"1"
Click
=
"Button_Click"
/>
</
Grid
>
</
Window
>
And my class file
using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Text;
using
System.Windows;
using
System.Windows.Controls;
using
System.Windows.Data;
using
System.Windows.Documents;
using
System.Windows.Input;
using
System.Windows.Media;
using
System.Windows.Media.Imaging;
using
System.Windows.Navigation;
using
System.Windows.Shapes;
using
System.Collections.Specialized;
using
Telerik.Windows.Controls;
using
Telerik.Windows.Controls.GridView;
namespace
HierarchiyGridSuccess
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public
partial
class
MainWindow : Window
{
DataAccessDataContext m_dcData;
public
MainWindow()
{
InitializeComponent();
this
.Loaded +=
new
RoutedEventHandler(MainWindow_Loaded);
this
.rgvData.Items.CollectionChanged +=
new
NotifyCollectionChangedEventHandler(Items_CollectionChanged);
rgvData.Filtered +=
new
EventHandler<Telerik.Windows.Controls.GridView.GridViewFilteredEventArgs>(rgvData_Filtered);
}
void
rgvData_Loaded(
object
sender, RoutedEventArgs e)
{
var childGrid = (RadGridView)sender;
var parentRow = childGrid.ParentRow;
if
(parentRow !=
null
)
{
rgvData.SelectedItem = childGrid.DataContext;
parentRow.IsExpandedChanged +=
new
RoutedEventHandler(parentRow_IsExpandedChanged);
}
}
void
parentRow_IsExpandedChanged(
object
sender, RoutedEventArgs e)
{
rgvData.SelectedItem = ((GridViewRow)sender).DataContext;
}
void
rgvData_Filtered(
object
sender, Telerik.Windows.Controls.GridView.GridViewFilteredEventArgs e)
{
rgvData.ItemsSource = m_dcData.Students;
}
private
void
Items_CollectionChanged(
object
sender, NotifyCollectionChangedEventArgs e)
{
try
{
if
(e.Action == NotifyCollectionChangedAction.Add)
{
foreach
(Student item
in
e.NewItems)
{
this
.m_dcData.Students.InsertAllOnSubmit(e.NewItems.OfType<Student>());
}
}
if
(e.Action == NotifyCollectionChangedAction.Remove)
{
this
.m_dcData.Students.DeleteAllOnSubmit(e.OldItems.OfType<Student>());
}
}
catch
(Exception s)
{ }
}
void
MainWindow_Loaded(
object
sender, RoutedEventArgs e)
{
m_dcData =
new
DataAccessDataContext();
m_dcData.Log = Console.Out;
DataContext = m_dcData.Students;
rgvData.ShowInsertRow =
true
;
}
private
void
Button_Click(
object
sender, RoutedEventArgs e)
{
var changes =
this
.m_dcData.GetChangeSet();
rgvData.BeginInsert();
MessageBox.Show(
string
.Format(
"There are {0} inserts and {1} deletes pending."
, changes.Inserts.Count, changes.Deletes.Count));
m_dcData.SubmitChanges();
}
}
}
How come I cannot click the add new item of my parent table?