<
telerik:RadGridView
Name
=
"grdOrders"
Grid.Row
=
"1"
AutoGenerateColumns
=
"False"
ItemsSource
=
"{Binding LineItems}"
SelectedItem
=
"{Binding Path=SelectedLineItem}"
IsSynchronizedWithCurrentItem
=
"True"
IsReadOnly
=
"True"
ClipboardCopyMode
=
"Cells"
RowStyleSelector
=
"{StaticResource backorderStyleSelector}"
ScrollViewer.HorizontalScrollBarVisibility
=
"Auto"
ScrollViewer.VerticalScrollBarVisibility
=
"Auto"
MouseDoubleClick
=
"grdOrders_MouseDoubleClick"
SelectionMode
=
"Extended"
>
<
i:Interaction.Behaviors
>
<
b:MultiSelectBehavior
SelectedItems
=
"{Binding Path=SelectedLineItems}"
/>
</
i:Interaction.Behaviors
>
<
telerik:RadGridView.Columns
>
<
telerik:GridViewDataColumn
DataMemberBinding
=
"{Binding Path=GPPONumber}"
Header
=
"GP PO Number"
/>
<
telerik:GridViewDataColumn
DataMemberBinding
=
"{Binding Path=LineItemId}"
Header
=
"Line Item Id"
/>
<
telerik:GridViewDataColumn
DataMemberBinding
=
"{Binding Path=Quantity}"
Header
=
"Quantity"
/>
<
telerik:GridViewDataColumn
DataMemberBinding
=
"{Binding Path=PartNumber}"
Header
=
"Part Number"
/>
<
telerik:GridViewDataColumn
DataMemberBinding
=
"{Binding Path=Description}"
Header
=
"Description"
/>
<
telerik:GridViewDataColumn
DataMemberBinding
=
"{Binding Path=WarehouseCode}"
Header
=
"Warehouse"
/>
<
telerik:GridViewDataColumn
DataMemberBinding
=
"{Binding Path=WarehouseBin}"
Header
=
"Bin Location"
/>
<
telerik:GridViewDataColumn
DataMemberBinding
=
"{Binding Path=ShippingMethod}"
Header
=
"Shipping Method"
/>
<
telerik:GridViewDataColumn
DataMemberBinding
=
"{Binding Path=VendorName}"
Header
=
"Vendor Name"
/>
<
telerik:GridViewDataColumn
DataMemberBinding
=
"{Binding Path=Salesrep}"
Header
=
"Sales Rep"
/>
<
telerik:GridViewDataColumn
DataMemberBinding
=
"{Binding Path=SourcedBy}"
Header
=
"Sourced By"
/>
<
telerik:GridViewDataColumn
DataMemberBinding
=
"{Binding Path=Backordered}"
Header
=
"B/O?"
/>
</
telerik:RadGridView.Columns
>
</
telerik:RadGridView
>
public
ObservableCollection<WarehouseLineItemProxy> LineItems
{
get
{
return
lineItems;
}
set
{
lineItems = value;
RaisePropertyChanged(() => LineItems);
ViewOrderInfoCommand.RaiseCanExecuteChanged();
}
}
refreshTimer =
new
DispatcherTimer();
refreshTimer.Interval = TimeSpan.FromSeconds(60);
refreshTimer.Tick +=
new
EventHandler(refreshTimer_Tick);
/// <summary>
/// Handles the Tick event of the refreshTimer control.
/// </summary>
/// <param name="sender">The source of the event.</param>
/// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param>
private
void
refreshTimer_Tick(
object
sender, EventArgs e)
{
refreshTimer.Stop();
RefreshLineItems(
new
object
());
refreshTimer.Start();
}
/// <summary>
/// Refreshes the line items.
/// </summary>
/// <param name="arg">The arg.</param>
private
void
RefreshLineItems(
object
arg)
{
if
(!worker.IsBusy)
{
ShowBusyIndicator =
true
;
worker.RunWorkerAsync();
refreshTimer.Stop();
refreshTimer.Start();
}
}
/// <summary>
/// Handles the DoWork event of the worker control.
/// </summary>
/// <param name="sender">The source of the event.</param>
/// <param name="e">The <see cref="System.ComponentModel.DoWorkEventArgs"/> instance containing the event data.</param>
private
void
worker_DoWork(
object
sender, DoWorkEventArgs e)
{
e.Result = adapter.LoadWarehouseOrders();
}
/// <summary>
/// Handles the RunWorkerCompleted event of the worker control.
/// </summary>
/// <param name="sender">The source of the event.</param>
/// <param name="e">The <see cref="System.ComponentModel.RunWorkerCompletedEventArgs"/> instance containing the event data.</param>
private
void
worker_RunWorkerCompleted(
object
sender, RunWorkerCompletedEventArgs e)
{
Dispatcher.CurrentDispatcher.BeginInvoke(
new
Action<ObservableCollection<WarehouseLineItemProxy>>(
this
.UpdateGridData), e.Result);
}
/// <summary>
/// Updates the grid data.
/// </summary>
/// <param name="lineItems">The line items.</param>
private
void
UpdateGridData(ObservableCollection<WarehouseLineItemProxy> lineItems)
{
LineItems = lineItems;
ShowBusyIndicator =
false
;
}
<ControlTemplate x:Key="EditAppointmentTemplate" TargetType="{x:Type telerik:SchedulerDialog}">
<Grid VerticalAlignment="Center" Margin="10">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="150"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Label Grid.Column="0" Content="Number of Tap Activity" Height="25"/>
<telerik:RadNumericUpDown Grid.Column="1" Height="25" Width="50" NumberDecimalDigits="0" ValueFormat="Numeric" HorizontalAlignment="Left"
Value="{Binding Occurrence.Appointment.TapActivityNum, Mode=TwoWay}" />
</Grid>
</ControlTemplate>
<Style x:Key="EditAppointmentStyle" TargetType="telerik:SchedulerDialog">
<Setter Property="Width" Value="250" />
<Setter Property="Height" Value="100" />
<Setter Property="IsTabStop" Value="False" />
<Setter Property="SnapsToDevicePixels" Value="True" />
<Setter Property="Template" Value="{StaticResource EditAppointmentTemplate}" />
<Setter Property="HeaderTemplate">
<Setter.Value>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="Number of Tap Activity" />
</StackPanel>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
foreach (ClienteBE _cliente in this.lstCliente)
{
tam = _cliente.Nome.Length > tam ?
_cliente.Nome.Length :
tam;
this.cmbCliente.DisplayMemberPath = "Nome";
this.cmbCliente.Items.Add(_cliente);
}
Hi,
I am working with RadGridView, in MVVM WPF application and I need to validate cell compared to other values in binding collection.
I have a object :
public
class
MyObject
{
public
DateTime DateBegin {
get
;
set
;}
public
int
Value {
get
;
set
;}
}
And if I add a new row in my GridView with existing Date I want to show error message in cell.
I thought to use an ValidationRules in my cell, but i am not sure if i can compared to with others values in binding list.
I found some solution, but isn't MVVM compliant :
public
void
RadGridView1_CellValidating(
object
sender, GridViewCellValidatingEventArgs e) {
bool
isValid =
true
;
string
validationText =
"Validation failed. "
;
if
(cell.column.uniquename ==
"mydatecolumn"
)
{
GridViewCell cell = e.Cell;
isValid = ValidateDate((datetime) e.NewValue);
if
(!isValid)
{
validationText +=
"You already used that date, mate."
;
}
}
}
private
static
bool
ValidateDate(datetime newDate)
{
// Some linq to see if it's in your collection or not
}