回发时 asp.net 下拉列表会自行复制

本文关键字:复制 下拉列表 net asp | 更新日期: 2023-09-27 17:55:14

这是一个非常奇怪的问题

当我更改下拉列表的值时,将显示一个新的下拉列表。我很困惑,

要知道我在说什么,请检查这些图像。

编辑

绑定代码

    CallerId = Request["CallerID"];
    if (String.IsNullOrWhiteSpace(CallerId)) return;
    var results = ZumaDa.GetCustomerInformation(CallerId);
    rowCount = results.Rows.Count;
    CallerId = rowCount > 0 ? results.Rows[0][4].ToString() : CallerId;
    if (rowCount > 1)
    {
        ListView1.Enabled = false;
        GridView1.DataSource = results;
        GridView1.DataBind();
    }
    else
    {
        GridView1.Enabled = false;
        ListView1.DataSource = results;
        ListView1.DataBind();
    }

该代码在页面加载中,而不是在 !ispostback 上

回发时 asp.net 下拉列表会自行复制

由于您使用 ListView 标记和Page_Load代码更新了问题,因此在将数据绑定代码包装在if (!Page.IsPostBack)块中后,重复的 DropDownList 问题似乎消失了。

代码中的一个问题是,在 SelectedIndexChanged 事件中,您正在 ListView 中搜索 DropDownList 和 TextBox。 您需要搜索发生 SelectedIndexChanged 事件的 ListViewItem 控件。

为此,您可以首先从"sender"参数中获取DropDownList。然后,您应该找到DropDownList的"命名容器"控件,并对其进行搜索。 喜欢这个:

var dropDown = (DropDownList)sender;
var visitID = (TextBox)dropDown.NamingContainer.FindControl("visitID");

第二行代码可能需要额外的".命名容器"取决于您的标记。

我认为您需要在 !Is回发检查意味着何时回发它页面加载事件触发并且它第二次绑定下拉列表,或者如果没有,请共享绑定代码