回发后,asp.net下拉列表重复自己

时间:2014-03-29 10:09:10

标签: c# asp.net drop-down-menu

这是一个非常奇怪的问题

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

要知道我在说什么,请查看这些图片。

修改

绑定代码

    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

2 个答案:

答案 0 :(得分:2)

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

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

为此,您可以先从“sender”参数中获取DropDownList。然后你应该找到DropDownList的“NamingContainer”控件,并搜索它。像这样:

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

第二行代码可能需要额外的“.NamingContainer”,具体取决于你的标记。

答案 1 :(得分:0)

我认为你需要绑定listview!IsPostback检查意味着何时回发它的pageload事件被触发并且它第二次绑定下拉列表或者如果它不是请分享绑定代码