0

我有一个绑定到数据库的组合框,当我从组合框中选择订单时,它必须在单独的网格视图上显示订单详细信息和客户详细信息。我实现了,现在我想在该组合中有一个“全”选项,当全部选择时,它将显示所有订单详细信息和数据库中的客户详细信息。

注意我得到了表,ordersDetails它们customerDetails有表的外键Orders。我使用外键检索数据,但现在选项 ALL 没有外键,这就是我面临的问题。我已将我的网格视图与数据源绑定。

我的选择组合框绑定代码

SELECT 
    [ID], [orderName], 
FROM 
    Orders

我的 gridview 选择代码,根据从组合框中选择的内容在 gridview 上显示所选项目

SELECT 
    CustomerName, CustomerName,
FROM 
    Orders 
INNER JOIN
    OrderDetails ON Orders.ID = OrderDetails.OrderRef
WHERE 
    ID = @.orderRef
4

1 回答 1

0

要从数据库中选择所有详细信息和所有订单详细信息,您需要更改查询

在您的设备上调用以下函数DropDownList.SelectedIndexChanged

protected void GetOrders(int OrderID = 0)
{
// Connection objects defined here

// Get the order details
if (OrderID == 0) {
    string sql = "SELECT * FROM OrderDetails";
} else {
    string sql = "SELECT * FROM OrderDetails WHERE OrderID = " + OrderID;
}

DataSet ds = null;
SqlDataAdapter da = new default(SqlDataAdapter);
// check this, it might be a SqlTableAdapter

da.SelectCommand = new SqlCommand(System.Data.sql, conn);
da.Fill(ds);

gvOrderDetails.DataSource = ds;
gvOrderDetails.DataBind();
}

这只是获取您的一个 Gridview 的数据(在 DataSet 中,因此您可以在需要时对 GridView 进行分页)。

您也可以复制此过程以获取 CustomerDetails。

上面的代码假定您在 DropDownList 中将值 0 设置为 ALL 项。

因此,如果您的 DropDownList 称为 ddlOrders,请按如下方式调用该过程:

protected void ddlOrders_SelectedIndexChanged(object sender, System.EventArgs e)
{
GetOrders(ddlOrders.SelectedItem.Value);
}

GetCustomers 也是如此。

这些将使用与特定 OrderID 或所有订单匹配的行填充 GridView。

希望这可以帮助

于 2012-07-10T09:21:31.160 回答