0

テーブル名が「Product_Master」で、列ヘッダーが「ProductID、ProductCode、ProductName、ProductDescription、LandingPrice、SellingPrice、Stock、ProductCategory」のデータベースがあります。

wpf ウィンドウにデータグリッドがあります。

データベースからのすべての値をデータグリッドに入力できます。

コードは以下です。

        SqlCeCommand com = new SqlCeCommand("SELECT ProductCode FROM Products_Master WHERE ProductName =('" + txtAutoProductName.Text + "') OR ProductCode = ('" + txtProductCode.Text + "')", con);
        try
        {
            SqlCeDataAdapter da = new SqlCeDataAdapter();
            da.SelectCommand = com;
            DataTable dt = new DataTable();
            da.Fill(dt);
            BindingSource bSource = new BindingSource();
            bSource.DataSource = dt;
            dgrdBilling.ItemsSource = bSource;
            da.Update(dt);
        }
        catch (Exception ex)
        {
            System.Windows.Forms.MessageBox.Show(ex.Message, System.Windows.Forms.Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
        }

データグリッドを列名「Number、ProductCode、ProductName、Quantity、Tax、Total」でカスタマイズし、異なるテーブルから個々の値を追加したいと考えています。

同じことをする方法。

以下に追加

    private void txtAutoProductName_TextChanged(object sender, EventArgs e)
    {
        SqlCeCommand com = new SqlCeCommand("SELECT * FROM Products_Master WHERE ProductName =('" + txtAutoProductName.Text + "') OR ProductCode = ('" + txtProductCode.Text + "')", con);
        try
        {
            SqlCeDataAdapter da = new SqlCeDataAdapter();
            BindingSource bSource = new BindingSource();
            DataTable dt = new DataTable();
            DataRow newRow = dt.NewRow();
            da.SelectCommand = com;
            da.Fill(dt);
            bSource.DataSource = dt;
            //dgrdBilling.ItemsSource = bSource;
            dgrdBilling.ItemsSource = dt.DefaultView;
            //dgrdBilling.Items.Add(bSource);
            da.Update(dt);
            newRow["ProductName"] = txtAutoProductName.Text;
            newRow["ProductCode"] = bSource;
            dt.Rows.Add(newRow);
        }
        catch (Exception ex)
        {
            System.Windows.Forms.MessageBox.Show(ex.Message, System.Windows.Forms.Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
    }
4

2 に答える 2

1

.xaml でカスタマイズするには、これを試してください。

最初に AutoGenerateColumns を設定してから、適切なバインドで必要な列を追加します。

DataGrid ItemsSource="{Binding Products}" AutoGenerateColumns="False" >
<DataGrid.Columns>
     <DataGridTextColumn Header="Name" Binding="{Binding Path=Column_name_in_table}"/>
</DataGrid.Columns>

これは分離コード .xaml.cs に行を追加するためのものです:

DataRow newRow = dt.NewRow();

newRow["ProductID"] = txtBox1.Text;
newRow["ProductCode"] = txtBox2.Text;
      .
      .
      .

dt.Rows.Add(newRow);

DataTableの変更をDataGridに通知する場合は、グリッド* ItemsSource * をDataViewまたはdt.DefaultView()に設定します。

于 2013-10-28T11:48:56.817 に答える
0

これは、DataGrid の使用方法に関する優れたチュートリアルです。

http://wpftutorial.net/DataGrid.html

カスタム列を定義する場合は、AutoGenerateColumns="False" を設定します。

<DataGrid ItemsSource="{Binding Customers}" AutoGenerateColumns="False" >
    <DataGrid.Columns>
        <DataGridTemplateColumn Header="Image" Width="SizeToCells" IsReadOnly="True">
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <Image Source="{Binding Image}" />
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>
    </DataGrid.Columns>
</DataGrid>

この例では、ヘッダー名は Image です。

楽しむ。

于 2013-10-28T11:26:13.873 に答える