0

すべてのコントロールが同じテーブルのプロパティである Web 更新フォームがあります。このように動作する必要があります: メイン (最初の) ドロップダウンリストから値を選択するたびに、クエリを実行してすべてのフィールド (プロパティ) を取得し、選択した値に応じて他のコントロールを埋める必要があります。

イベントコード:

Protected Sub DropDownList1_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs) Handles DropDownList1.SelectedIndexChanged
        Dim objModel As New ModelDAO ' the data access class taht contains search method          
        Dim myobject = objModel.searchObject(DropDownList1.Text)                      
        TextBox1.Text = myobject.Property2
        DropDownList2.SelectedValue = myobject.Property3 'what's wrong here?
    End Sub

コントロール:

<asp:DropDownList ID="DropDownList1" runat="server" AppendDataBoundItems="True"
                    DataSourceID="SqlDataSource1" DataTextField="MODEL" DataValueField="MODEL"
                    AutoPostBack="true" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged">
                    <asp:ListItem Text="-Select-" Value="" />
                    </asp:DropDownList>
<asp:DropDownList ID="DropDownList2" runat="server">
                        <asp:ListItem Value="0">-Select-</asp:ListItem>
                        <asp:ListItem>EDS</asp:ListItem>
                        <asp:ListItem>BDS</asp:ListItem>                            
                    </asp:DropDownList>

2番目のDropDownListを除いて機能します。選択した値を変更する方法がわかりません。これを試しました:

DropDownList2.Text = myobject.Property3

この:

DropDownList2.SelectedValue = myobject.Property3

ただし、どちらの場合も、dropdownlist2 には選択されたアイテムが表示されません。

注: textbox.text は正しい値を取得するため、検索方法に問題はないと思います。そのため、投稿していません。

4

5 に答える 5

1

VBがC#のようなものである場合(同様の問題が発生した場合)、試してください

DropDownList2.SelectedItem = myobject.Property3

選択したい項目が項目のコントロール リストにあることを確認してください。そうしないと、機能しません。

于 2013-07-31T22:22:43.043 に答える
1

残念ながら、そのようには機能しません。私は C#er であるため、疑似コードを提供しますが、これは私が通常行う方法です。

Dim int i = 0
ForEach Item in DDL.Items
    If Item.Text = databaseResult
        DDL.SelectedIndex = i
        ExitLoop
    EndIf
    i = i + 1
EndForEach

以下のコメントスレッドからの作業コードは次のとおりです。

Dim i As Integer = 0 
For Each listitem In DropDownList1.Items 
    If DropDownList3.SelectedItem.Text = myobject.property Then 
        DropDownList3.SelectedIndex = i 
        Exit For 
    End If 
    i = i + 1 
Next
于 2013-07-31T22:21:04.823 に答える
1

ここでこれを試してください:

        int i = 0;
        foreach (ListItem item in YourDropDownList.Items)
        {
            //Check it see if your item actually exists in the list
            //Could also be item.Text                
            if (item.Value.ToLower() == value)
            {
                item.Selected = true;
                YourDropDownList.SelectedIndex = i;
                break;
            }
            else
                item.Selected = false;

            i++;
        }

        if (YourDropDownList.SelectedIndex != -1)
        {                
            YourDropDownList_SelectedIndexChanged(YourDropDownList, EventArgs.Empty);
        }

これが機能するかどうかわからない場合は、試してみてください:

    YourDropDownList.SelectedValue = myobject.Property3
    YourDropDownList_SelectedIndexChanged(YourDropDownList, EventArgs.Empty);
于 2013-07-31T22:34:38.797 に答える
1

では、2 番目のドロップダウンで selectedValue を表示することとは別に、これは機能していますか?

比較を行うときは、親の値 (通常は整数) と等しくなければならないことに注意してください。

もう 1 つの懸念事項は、ポストバックの問題です。

于 2013-08-01T10:09:40.753 に答える