Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 下拉列表中的第一条记录不会更新其他下拉框_C#_Asp.net - Fatal编程技术网

C# 下拉列表中的第一条记录不会更新其他下拉框

C# 下拉列表中的第一条记录不会更新其他下拉框,c#,asp.net,C#,Asp.net,我有一个下拉框,它是根据SQL查询的结果填充的。从dropdownlist1中选择的值成功填充lbAuthors下拉列表。在测试期间,我意识到dropdownlist 1中的第一条记录永远不会更新到dropdownlist中。这里有一个例子:如果我在第二个下拉框中有三位作者的名字(弗罗斯特、吉卜林、坡),第一个名字弗罗斯特不会更新到第一个下拉框中。吉卜林或爱伦·坡都有,但不是弗罗斯特 我的问题是-我需要在我的活动中包括什么才能让Frost(或无论第一条记录是什么)更新到第一个下拉框中 代码隐藏:

我有一个下拉框,它是根据SQL查询的结果填充的。从dropdownlist1中选择的值成功填充lbAuthors下拉列表。在测试期间,我意识到dropdownlist 1中的第一条记录永远不会更新到dropdownlist中。这里有一个例子:如果我在第二个下拉框中有三位作者的名字(弗罗斯特、吉卜林、坡),第一个名字弗罗斯特不会更新到第一个下拉框中。吉卜林或爱伦·坡都有,但不是弗罗斯特

我的问题是-我需要在我的活动中包括什么才能让Frost(或无论第一条记录是什么)更新到第一个下拉框中

代码隐藏:

protected void update_SelectedItem(object sender, EventArgs e)
{
    lbAuthorList.Items.Clear();
    lbAuthorList.Items.Add(new ListItem(DropDownList1.SelectedItem.Text, DropDownList1.SelectedItem.Text));
    lbAuthorList.Items.FindByValue(DropDownList1.SelectedItem.Text).Selected = true;
}
标记:

<asp:DropDownList runat="server" 
                  ID="lbAuthors" 
                  style="float:left;" 
                  DataSourceID="odsAuthorList" 
                  DataTextField="DisplayAuthorName" DataValueField="AuthorID" 
                  onselectedindexchanged="lbUserList_SelectedIndexChanged" 
                  AppendDataBoundItems="True" >
</asp:DropDownList>
<asp:DropDownList ID="DropDownList1" 
                  runat="server" 
                  AppendDataBoundItems="True" 
                  DataSourceID="SqlDataSource2" 
                  DataTextField="Display_AuthorName"  
                  EnableViewState="false"
                  DataValueField="Display_AuthorName"                  
                  OnSelectedIndexChanged="update_SelectedItem" 
                  AutoPostBack="true">
</asp:DropDownList>

这是因为当您选择第一项时,所选索引不会更改。您需要像这样插入一个虚拟项::

<asp:DropDownList ID="DropDownList1" runat="server" 
                  AppendDataBoundItems="True" 
                  DataSourceID="SqlDataSource2" 
                  DataTextField="Display_AuthorName"  
                  EnableViewState="false"
                  DataValueField="Display_AuthorName"  
                  OnSelectedIndexChanged="update_SelectedItem" 
                  AutoPostBack="true">
    <asp:ListItem Text="--Select One--" Value="-1"></asp:ListItem>
</asp:DropDownList>

此问题之所以出现,是因为您为dropdownlist编写的代码已更改,但最初选择的第一个值未触发dropdownlist更改事件。如果你选择第二个,然后选择第一个,它会工作得很好

只需在dropdownlist项中添加一个虚拟变量

dropdownlist1.Items.Add(“--Select--”)

看看这个答案