и таблица уже сама готова... определены поля, заполнены записи...
в принципе уже с этим можно работать... но если нужно приложению придать более дружелюбный вид, то можно внести несколько изменений...
Свой набор полей(Заголовки)
Если при использовании DataGrid, у нас определен класс, которым будет заполняться таблица. можно указать только те поля которые мы будем использовать.
пусть у нас есть класс
PiketList, с полями (ID(int),FROM(string),TO(string),IsPiket(bool),x(double),y(double),z(double) )
Используя механизм Binding можно указать поля которые хотим вывести, для логического типа красивее использовать data:DataGridCheckBoxColumn
<data:DataGrid Grid.Row="1" Name="dataGridPkt" AutoGenerateColumns="False" >
<data:DataGrid.Columns>
<data:DataGridTextColumn Binding="{Binding ID}" Header="№"/>
<data:DataGridTextColumn Binding="{Binding FROM}" Header="От"/>
<data:DataGridTextColumn Binding="{Binding TO}" Header="До"/>
<!-- флажок -->
<data:DataGridCheckBoxColumn Binding="{Binding IsPiket}" Header="Пикет"/>
</data:DataGrid.Columns>
</data:DataGrid>
теперь при использовании командыdataGridPkt.ItemsSource = PrjProperty.CurrentPiketList;
будут заполнены указанные поля
Создание кнопки в поле.
для удаления записи можно описать кнопку в поле, и для каждой записи будет своя кнопочка
описание кнопки выглядит так
<data:DataGridTemplateColumn> <data:DataGridTemplateColumn.CellTemplate> <DataTemplate> <Button x:Name="btnDelete" Content="Удл" Foreground="DarkBlue" Click="btnDelete_Click" > <!-- Всплывающая подсказка --> <ToolTipService.ToolTip> <ToolTip> <TextBlock Text="Удалить строчку" /> </ToolTip> </ToolTipService.ToolTip> </Button> </DataTemplate> </data:DataGridTemplateColumn.CellTemplate> </data:DataGridTemplateColumn>для обработки события нажатия на кнопку удаления
создадим окно на подтверждение
для этого добавим новый элемент в наш проект "Дочернее окно Silverligth" - ConfimDeleteRecord
в режиме кода
public partial class ConfimDeleteRecord : ChildWindow
{
int index = 0;
/// <summary>
/// Конструктор окна подтверждения
/// </summary>
/// <param name="wtlt">Заголовок</param>
/// <param name="msg">Сообщение</param>
/// <param name="idx">номер </param>
public ConfimDeleteRecord(string wtlt, string msg, int idx)
{
InitializeComponent();
index = idx;
this.Title = wtlt;
this.Message.Text = msg;
}
private void OKButton_Click(object sender, RoutedEventArgs e)
{
PrjProperty.CurrentPiketList.RemoveAt(index);
this.DialogResult = true;
}
private void CancelButton_Click(object sender, RoutedEventArgs e)
{
this.DialogResult = false;
}
}
в нашей странице теперь вызовем окно и создадим обработчик событий
#region ConfimDeleteRecord_Closed -- Событие закрытия окна Удаления
private void ConfimDeleteRecord_Closed(object sender, EventArgs e)
{
var result = ((ChildWindow)sender).DialogResult;
if (result.HasValue)
{
//результат нажатия кнопки OK/Cancel у нас в result.Value
if (result.Value == true)
{
textBlockStatus.Text = "Запись удалена";
refreshTable();
}
}
}
#endregion ConfimDeleteRecord_Closed
#region btnDelete_Click -- Удалить запись
private void btnDelete_Click(object sender, RoutedEventArgs e)
{
int i = dataGridPkt.SelectedIndex;
ConfimDeleteRecord del = new ConfimDeleteRecord("Удаление записи...", "Вы действительно желаете удалить запись № " + i, i);
del.Closed += new EventHandler(ConfimDeleteRecord_Closed);
del.Show();
}
#endregion btnDelete_Click
Awesome article. It is so detailed and well formatted that i enjoyed reading it as well as get some new information too.
ОтветитьУдалитьSAP HR training in Chennai
Этот комментарий был удален автором.
ОтветитьУдалить