我在 datagrid 中默认有一个新的空行(充当页脚行)。我想输入页脚行的条形码,然后按回车。然后它会获取一些值并应该填充剩余的单元格 item 、 mrp 、 cgst 、 sgst 、 discount 、 amount 、 salesman (数量除外)。填充字段后,焦点应转到数量单元格。输入数量并按回车,然后此页脚行应添加到数据网格中,并应创建另一个新的空页脚行,重点放在条形码上。这就是我想做的
现在我卡住了,因为我不知道如何用值填充新行(不将该行添加到数据网格)..
XAML
<Grid Margin="59,59,89,0">
<DataGrid x:Name="dataGrid" Margin="10,33,10,37" PreviewKeyDown="dataGrid_PreviewKeyDown" />
</Grid>
C#
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
void CreateDataTable()
{
DataTable dt = new DataTable();
DataColumn No = new DataColumn("No",typeof(double));
DataColumn Barcode = new DataColumn("Barcode", typeof(string));
DataColumn Item = new DataColumn("Item", typeof(string));
DataColumn Qty = new DataColumn("Qty", typeof(double));
DataColumn Mrp = new DataColumn("Mrp", typeof(double));
DataColumn Discount = new DataColumn("Discount", typeof(double));
DataColumn Cgst = new DataColumn("Cgst", typeof(double));
DataColumn Sgst = new DataColumn("Sgst", typeof(double));
DataColumn Amount = new DataColumn("Amount", typeof(double));
DataColumn Salesman = new DataColumn("Salesman", typeof(string));
dt.Columns.Add(No);
dt.Columns.Add(Barcode);
dt.Columns.Add(Item);
dt.Columns.Add(Qty);
dt.Columns.Add(Mrp);
dt.Columns.Add(Discount);
dt.Columns.Add(Cgst);
dt.Columns.Add(Sgst);
dt.Columns.Add(Amount);
dt.Columns.Add(Salesman);
dataGrid.ItemsSource = dt.DefaultView;
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
this.CreateDataTable();
}
private void dataGrid_PreviewKeyDown(object sender, KeyEventArgs e)
{
var currentRowIndex = dataGrid.Items.IndexOf(dataGrid.CurrentItem);
// move focus to next field
var uiElement = e.OriginalSource as UIElement;
if (e.Key == Key.Enter && uiElement != null)
{
e.Handled = true;
FillBarcodeData(currentRowIndex);
dataGrid.CurrentCell = new DataGridCellInfo(dataGrid.Items[currentRowIndex], dataGrid.Columns[3]);
dataGrid.BeginEdit();
}
}
public void FillBarcodeData(int currentRowIndex)
{
DataTable dt = new DataTable();
}