0

データベースにバインドするコンボボックスを取得しました。コンボボックスから注文を選択すると、注文の詳細と顧客の詳細を別々のグリッドビューに表示する必要があります。私はそれを達成しました.ALLが選択されたときに、そのコンボボックスに「すべて」オプションが必要になり、データベースからすべての注文の詳細と顧客の詳細が表示されます.

テーブルへの外部キーがあることに注意ordersDetailsしてください。外部キーを使用してデータを取得しましたが、オプション ALL に外部キーがありません。これが私が直面している問題です。グリッドビューをデータソースにバインドしました。customerDetailsOrders

コンボボックスバインディングを選択するための私のコード

SELECT 
    [ID], [orderName], 
FROM 
    Orders

コンボボックスから選択されたものに応じて、選択したアイテムをグリッドビューに表示する私のグリッドビュー選択コード

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();
}

これは、Gridviews の 1 つのデータを取得するだけです (DataSet で、必要に応じて GridViews をページングできます)。

この手順をコピーして、CustomerDetails も取得できます。

上記のコードは、DropDownList の ALL アイテムに値 0 が設定されていることを前提としています。

したがって、DropDownList が ddlOrders と呼ばれる場合、次のようにプロシージャを呼び出します。

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

GetCustomers と同じです。

これらは、特定の OrderID またはすべての注文に一致する行を GridViews に設定します。

お役に立てれば

于 2012-07-10T09:21:31.160 に答える