2

私は 2 つのドロップダウン リストを持つ Web サイトを作成しています。

両方のオプションが選択された後、その顧客からの注文がある場合 (dropdownlist2)、その製品 (dropdownlist1) を注文した場合、orderid、orderdate、shipdate、および数量を示すグリッドビューを表示するボタンがヒットされます。そのシナリオが発生していない場合に設定されるバリデータ。

2 つのドロップダウン リストの内容を条件として使用する必要があるため、3 番目のデータソースの SQL を動的にする方法がわかりません。これまでのところ、これは私が持っているものです:

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
    GridView1.Visible = True

    Dim v1, v2 As String
    v1 = DropDownList1.SelectedItem.Value.ToString
    v2 = DropDownList2.SelectedItem.Value.ToString

    SqlDataSource3.SelectCommand = "select O.OrderID, OrderDate, ShippedDate, Quantity" _
                                 & "from Orders O, [Order Details] D, Customers C, Products P" _
                                 & "where O.OrderID = D.OrderID" _
                                 & "and C.CustomerID = O.CustomerID" _
                                 & "and P.ProductID = D.ProductID" _
                                 & "and companyname = '" & v1 & "'" _
                                 & "and productname = '" & v2 & "'"

End Sub

StackOverflow を使用するのはこれが初めてなので、間違っていたら申し訳ありません

4

2 に答える 2

1

ddlTwoが依存してddlOneおり、GridViewgvが両方の DropDownList の選択に依存していると仮定して、次の例に従います。

Protected Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init
    If Not IsPostBack Then
        ddlOne.DataBind()
        ddlTwo.DataBind()
    End If
End Sub

Protected Sub ddlOne_DataBinding(sender As Object, e As EventArgs) Handles ddlOne.DataBinding
    sender.DataSource = someListOne
    sender.DataTextField = "TXT"
    sender.DataValueField = "ID"
End Sub

Protected Sub ddlTwo_DataBinding(sender As Object, e As EventArgs) Handles ddlTwo.DataBinding
    sender.DataSource = someListTwo
    sender.DataTextField = "TXT"
    sender.DataValueField = "ID"
End Sub

Protected Sub ddlOne_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ddlOne.SelectedIndexChanged
    ddlTwo.DataBind()
    gv.DataBind()
End Sub

Protected Sub ddlTwo_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ddlTwo.SelectedIndexChanged
    gv.DataBind()
End Sub

Protected Sub gv_DataBinding(sender As Object, e As EventArgs) Handles gv.DataBinding
    sender.DataKeyNames = {"ID"}
    sender.DataSource = GetDataSource(ddlOne.SelectedValue, ddlTwo.SelectedValue)
End Sub

また、user2615302 が述べたように、AutoPostBack オプションを True に設定します。

于 2013-10-22T21:39:48.317 に答える