0

我有一个网络更新表单,其中每个控件都是同一个表的属性。它应该这样工作:每当我从主(第一个)下拉列表中选择一个值时,应该运行一个查询来获取所有字段(属性)并根据我选择的值填充其他控件。

事件代码:

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>

除了第二个 DropDownList 之外,它可以工作,我不知道如何更改选定的值,我试过这个:

DropDownList2.Text = myobject.Property3

和这个:

DropDownList2.SelectedValue = myobject.Property3

但在这两种情况下 dropdownlist2 都没有显示选定的项目。

注意:由于 textbox.text 确实获得了正确的值,我认为搜索方法没有任何问题,这就是我不发布它的原因。

4

5 回答 5

1

所以除了在第二个下拉列表中显示 selectedValue 之外,您还有这个工作吗?

请记住,在进行比较时,它必须等于父值(通常是整数)

另一个问题是回发问题!

于 2013-08-01T10:09:40.753 回答
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 回答
0

就这么简单...

ddlstate.SelectedIndex = ddlstate.Items.IndexOf(ddlstate.Items.FindByValue(dt.Rows[0]["state"].ToString()));

state是数据库中的列名。

ddlstate是您的下拉列表 ID。

于 2017-03-14T06:38:12.190 回答