【发布时间】:2016-05-15 15:27:33
【问题描述】:
我今天面临一个非常奇怪的问题。 我创建了一个 DropDownList,它将所选项目添加到列表中。 List 将绑定到 ListView。
这是下拉菜单:
<asp:DropDownList ID="ddlChooseNewApplication" runat="server" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged" AutoPostBack="True">
<asp:ListItem Selected="True">Bitte wählen</asp:ListItem>
<asp:ListItem Value="windows">Windows</asp:ListItem>
<asp:ListItem Value="mail">E-Mail</asp:ListItem>
<asp:ListItem Value="app1">App1</asp:ListItem>
<asp:ListItem Value="app2">App2</asp:ListItem>
<asp:ListItem Value="app3">App3</asp:ListItem>
</asp:DropDownList>
接下来,当一个项目被点击时,它会运行以下代码:
//This is a global variable
List<NewApplicationModels> applicationName = new List<NewApplicationModels>();
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
string value = ddlChooseNewApplication.SelectedValue.ToString();
applicationName.Add(new NewApplicationModels(){ ApplicationName = value});
ListViewNewApplications.DataSource = applicationName;
ListViewNewApplications.DataBind();
}
它将被添加到 List 中,这应该将所选应用程序添加到 ListView 中,如下所示:
<asp:ListView ID="ListViewNewApplications" runat="server">
<ItemTemplate>
<br /><br />
<%# Eval("ApplicationName") %><br />
<asp:Label ID="Label3" runat="server" Text="Titel"></asp:Label><br />
<asp:TextBox ID="tbNewTitle" runat="server"></asp:TextBox><br /><br />
<asp:Label ID="Label4" runat="server" Text="Beschreibung"></asp:Label><br />
<asp:TextBox ID="tbNewDescription" runat="server" TextMode="MultiLine"></asp:TextBox><br /><br />
</div>
</ItemTemplate>
</asp:ListView>
将单个项目添加到 ListView 有效。问题是,如果我在 DropDown 中选择了一个新的 Item,ListView 中的当前对象将被覆盖。我希望它在当前项目下创建一个新项目。 哪里错了?
在此先感谢
【问题讨论】:
-
您在调试模式下运行了吗?当您为 Listview 设置 Datasource 时,List
applicationName有什么?只有 1 件或更多? -
@PhamX.Bach 一直是一个项目。插入项目可能有错误。有什么想法吗?
-
然后我说列表
applicationName是a global variable。您应该在它的定义行中放置一个调试标志,并在每次更改下拉列表时检查它是否被重置(= new List<....> -
您应该将
applicationName列表保存在 ViewState 或 Session 变量中,以便它在回发中持续存在。 -
您可以使用
static List,这样回发时它不会被重置。无论如何,您能否检查一下我的代码在您的情况下是否运行正常,if (!applicationName.Any(item => item.ApplicationName == value))行?