我构建了一个DataTable
,并用国家/地区缩写和国家/地区扩展填充它。我将其作为DropDownList
内FormView
控件的DataSource。要查看此FormView
,用户单击表单上的按钮。 DropDownList始终在第一次正确填充 。在处理了这个FormView
(向数据存储添加记录)之后,用户必须单击他之前单击的相同按钮才能添加另一条记录,但DropDownList
从不填充。我已确认在每次调用时都会填充此列表的DataTable。当然,代码也完全一样。
表单代码如下所示:
<asp:DropDownList ID="lstBornIn" runat="server" />
并且代码隐藏看起来像这样:
tblCountry = (DataTable) Session["tblCountry"];
DropDownList lstBorn = (DropDownList)
FormView1.FindControl("lstBornIn");
lstBorn.DataSource = tblCountry;
lstBorn.DataValueField = "Abbrev";
lstBorn.DataTextField = "Country";
lstBorn.DataBind();
如上所述,这是第一次完美,但永远不会再次。它似乎是一个绑定问题,因为后续调用时Items列表为空。
有什么建议吗?
答案 0 :(得分:1)
我放弃了这一点,只想报告我为解决这个问题所采取的其他措施。
有人认为我看到的问题只发生在Visual Studio中,所以我在IIS7上建立了相关文件,并尝试使用三种主流浏览器。所有都失败了。
对我来说最令人难以置信的事情是,当我使用VS调试器查看其中一个列表时,它将所有67个项目整齐地隐藏起来。它只是不会显示它们。
我的解决方法很简单:对ASPX文件中的列表项进行硬编码。看起来很丑,但工作得很好。
我会留意那些暗示不同方法的东西。
答案 1 :(得分:0)
是否为页面或DropDownList或DDL层次结构中的其他控件关闭了ViewState?如果是这样,您将要么重新打开它,要么在回发时重新绑定。