2015-12-24 4 views
0

У меня есть 5 текстовых полей и кнопка, я хочу отображать 4 из 5 значений текстовых полей в сетке данных при нажатии кнопки. Я новый пользователь, поэтому я не могу прикрепить изображение интерфейса.Как добавить определенные значения текстовых полей в сетке данных (WPF)

Мои текстовые поля именуются следующим образом:

IDTextbox, titleText, QuantityTextbox, PriceTextbox, BrandTextbox 

Моя кнопка называется AddButton.

Когда я нажимаю на AddButton, значения из titleText, QuantityTextbox, PriceTextbox, BrandTextbox должны отображаться в dataGrid.

Я не хочу отображать идентификатор продукта в datagrid, вместо этого хочу колонку с заголовком «Total_price». Этот столбец должен отображать total_price ie (quantity * price)

Также я хочу добавлять значения каждый раз, когда нажимаем AddButton.

Благодаря

ответ

1

использовать этот код

<Grid> 
<Grid.ColumnDefinitions> 
    <ColumnDefinition /> 
    <ColumnDefinition /> 
</Grid.ColumnDefinitions> 
<DataGrid Name="DataGrid" ItemsSource="{Binding YourDataCollection}" /> 
<Grid Grid.Column="1"> 
    <Grid.RowDefinitions> 
     <RowDefinition /> 
     <RowDefinition /> 
     <RowDefinition /> 
    </Grid.RowDefinitions> 
    <TextBlock Grid.Row="0" Text="{Binding SelectedItem.Id, 
     ElementName=DataGrid}" /> 
    <TextBlock Grid.Row="1" Text="{Binding SelectedItem.Name, 
     ElementName=DataGrid}" /> 
    <TextBlock Grid.Row="2" Text="{Binding SelectedItem.BirthDate, 
     ElementName=DataGrid}" /> 
</Grid> 

1

Есть некоторые вещи, как, что .....

<TextBox Name="IDTextbox" AcceptsReturn="True" TextWrapping="Wrap" SpellCheck.IsEnabled="True" Language="en-US" /> 
<TextBox Name="titleText" AcceptsReturn="True" TextWrapping="Wrap" SpellCheck.IsEnabled="True" Language="en-US" /> 
<TextBox Name="QuantityTextbox" AcceptsReturn="True" TextWrapping="Wrap" SpellCheck.IsEnabled="True" Language="en-US" /> 
<TextBox Name="PriceTextbox" AcceptsReturn="True" TextWrapping="Wrap" SpellCheck.IsEnabled="True" Language="en-US" /> 
<TextBox Name="BrandTextbox" AcceptsReturn="True" TextWrapping="Wrap" SpellCheck.IsEnabled="True" Language="en-US" /> 
<Button Content="Add new row" HorizontalAlignment="Left" Margin="0,10,0,0" VerticalAlignment="Top" Width="75" Click="Button_Click"/> 

<DataGrid AutoGenerateColumns="False" Name="DataGrid1" CanUserAddRows="True" ItemsSource="{Binding TestBinding}" Margin="0,50,0,0" > 
      <DataGrid.Columns> 
       <DataGridTextColumn Header="Brand" IsReadOnly="True" Binding="{Binding Path=Brand}" Width="50"></DataGridTextColumn> 
       <DataGridTextColumn Header="Title" IsReadOnly="True" Binding="{Binding Path=Title}" Width="130"></DataGridTextColumn> 
       <DataGridTextColumn Header="Quantity" IsReadOnly="True" Binding="{Binding Path=Quantity}" Width="130"></DataGridTextColumn> 
       <DataGridTextColumn Header="Price" IsReadOnly="True" Binding="{Binding Path=Price}" Width="130"></DataGridTextColumn> 
      </DataGrid.Columns> 
     </DataGrid> 
public partial class MainWindow : Window 
{ 
    public MainWindow() 
    { 
     InitializeComponent(); 
    } 

    private void Button_Click(object sender, RoutedEventArgs e) 
    { 
     var data = new Test { Brand= BrandTextbox.Text, Title= titleText.Text, 
       Quantity = QuantityTextbox.Text, Price = PriceTextbox.Text }; 

     DataGridTest.Items.Add(data); 
    } 
} 

public class Test 
{ 
    public string Brand { get; set; } 
    public string Title { get; set; } 
    public string Price { get; set; } 
    public string Quantity { get; set; } 
} 
+0

Большое спасибо @jitendra, которые работали очень хорошо –

+0

, что если я хочу, чтобы сложить все цены в колонке цен DataGrid и показать их ниже в ярлыке? @jitendra –

+0

Вы можете добавить еще одну строку с общим итогом в объекте данных ... так что сделайте это --- data.add (новый Test {Brand = "", Quality = "", Title = "Total", Price = Data .Sub (l => l.Price)}); перед строкой DataGridTest.Items.Add (данные); @MohammadHaseeb. В настоящее время у меня нет визуальной Studio, поэтому, пожалуйста, дайте мне знать, если u найдет какую-либо проблему ........... –

1

в Xaml

<StackPanel> 
    <TextBox x:Name="txtID" Height="50"></TextBox> 
    <TextBox x:Name="txtQuantity" Height="50"></TextBox> 
    <TextBox x:Name="txtPrice" Height="50"></TextBox> 
    <TextBox x:Name="txtBrand" Height="50"></TextBox> 
    <TextBox x:Name="txtTitle" Height="50"></TextBox> 
    <Button Click="Button_Click_1" Height="20">Click</Button> 
    <DataGrid x:Name="gridTotal"> 

    </DataGrid> 
</StackPanel> 

в окнах нагруженных событие

DataTable dt = new DataTable(); 
private void Window_Loaded(object sender, RoutedEventArgs e) 
     { 
      try 
      { 

       if (!dt.Columns.Contains("Title")) 
       { 
        dt.Columns.Add("Title"); 
       } 
       if (!dt.Columns.Contains("Quantity")) 
       { 
        dt.Columns.Add("Quantity"); 
       } 
       if (!dt.Columns.Contains("Price")) 
       { 
        dt.Columns.Add("Price"); 
       } 
       if (!dt.Columns.Contains("Brand")) 
       { 
        dt.Columns.Add("Brand"); 
       } 
       if (!dt.Columns.Contains("Total")) 
       { 
        dt.Columns.Add("Total"); 
       } 

       gridTotal.ItemsSource = dt.DefaultView; 

      } 
      catch (Exception ec) 
      { 
       throw ec; 
      } 
     } 

в кнопки мыши

private void Button_Click_1(object sender, RoutedEventArgs e) 
     { 
      DataRow dr = dt.NewRow(); 
      dr["Title"] = txtTitle.Text; 
      dr["Quantity"] = txtQuantity.Text; 
      dr["Price"] = txtPrice.Text; 
      dr["Brand"] = txtBrand.Text; 
      dr["Total"] = Convert.ToDouble(txtQuantity.Text) * Convert.ToDouble(txtPrice.Text); 

      dt.Rows.Add(dr); 
     } 
+0

Я хочу добавить Поднимите все цены в столбце цены dataGrid и покажите их в нижней части сетки, не могли бы вы помочь мне в этом контексте? –

Смежные вопросы