0

首先说我在 wpf 中使用 c#,所以我的主窗口(SalesScreen)中的列表框出现了这个新问题。我有一个名为 SearchScreen 的窗口,它有一个从 sql 服务器上的表填充的数据网格。现在我的目标是能够从这个数据网格中选择一行并单击一个显示“添加到购物车”的按钮。单击此按钮时,它将成功地将所选行发送到正在填充主窗口上的列表框的新表。请记住,两个窗口同时保持打开状态。所以我遇到的问题是当服务器上的 tblCart 更改时 ListBox 不会自动更新。关于如何做到这一点的任何建议?再一次,我仍然处于 c# 的初学者阶段。

这是我启动 ListBox 的 xaml(只是一个基本的 ListBox):

<ListBox Height="261" HorizontalAlignment="Left" Margin="43,69,0,0" Name="listBox1" VerticalAlignment="Top" Width="240"/>

这是一种用于在 SalesScreen(主窗口)上更改的文本框的方法。当文本框更改事件发生时,该行被添加到服务器,并且列表框在窗口中正确更新。我尝试通过单击“添加到购物车”按钮来调用此事件,但它没有任何变化。现在,如果我使用 SearchScreen 上的“添加到购物车”按钮,然后返回主窗口并执行 textboxchanged 事件,它将更新添加的两个项目。

public void addtoList()
    {
        cn.Open();
        String cmdString = "Select Title, Price from tblCart";
        SqlCommand cmd = new SqlCommand(cmdString, cn);
        SqlDataReader dr = cmd.ExecuteReader();
        double subT = 0;
        double tax = 1.09;
        double total = 0;
        while (dr.Read())
        {
            int count = dr.FieldCount - 1;
            for (int i = 0; i < count; i++)
            {

                listBox1.Items.Add(dr["Title"].ToString() + dr["Price"].ToString());
                subT += Convert.ToDouble(dr["Price"]);

            }

        }
        total = subT * tax;
        subTotal.Text = subT.ToString();
        totalBlk.Text = total.ToString();
        cn.Close();
    }

这是 addtoCart 按钮:

private void addBtn_Click(object sender, RoutedEventArgs e)
    {
        SalesScreen ss = new SalesScreen();

        DataRowView drView = (DataRowView)dGrid.SelectedItem;
        String s = Convert.ToString(drView.Row["ID"]);
        String cmdString = "INSERT INTO tblCart(Title, GenreID, Price, Year, UML, Quantity) Select Title, GenreID, Price, Year, UML, Quantity FROM tblMovies WHERE ID = " + s;
        SqlCommand cmd = new SqlCommand(cmdString, cn);
        cmd.ExecuteNonQuery();

        ss.addtoList();
    }

所以基本上,我可以使用 textchanged 事件从同一个窗口更新它,但是当它从一个窗口发送到另一个窗口时,我在这个挑战中最不成功。任何建议将不胜感激。

4

2 回答 2

0
public SalesScreen()
    {
        InitializeComponent();
        addtoList();

    }
于 2013-05-01T03:23:17.503 回答
0

修改你的点击按钮事件

   private void addBtn_Click(object sender, RoutedEventArgs e)
{
    SalesScreen ss = new SalesScreen();

    DataRowView drView = (DataRowView)dGrid.SelectedItem;
    String s = Convert.ToString(drView.Row["ID"]);
    String cmdString = "INSERT INTO tblCart(Title, GenreID, Price, Year, UML, Quantity)  Select Title, GenreID, Price, Year, UML, Quantity FROM tblMovies WHERE ID = " + s;
    SqlCommand cmd = new SqlCommand(cmdString, cn);
    cmd.CommandType = CommandType.Text;
    cn.Open();
    cmd.ExecuteNonQuery();
    cn.Close();
    ss.addtoList();
}
于 2013-04-29T15:23:50.937 回答