C# 回发后检索dropdownlist选择
我使用下面给出的方法在dropdownlist中添加值C# 回发后检索dropdownlist选择,c#,asp.net,C#,Asp.net,我使用下面给出的方法在dropdownlist中添加值 pageload() { method(type); } public void method(type) { dropdownlist1.items.clear(); if(type == "Student") { dropdownlist1.items.add("abc"); dropdownlist1.items.add("xyz"); } } 当我选择dropdownlist值时,回发后它将丢失 我这样做是为了检索
pageload()
{
method(type);
}
public void method(type)
{
dropdownlist1.items.clear();
if(type == "Student")
{
dropdownlist1.items.add("abc");
dropdownlist1.items.add("xyz");
}
}
当我选择dropdownlist值时,回发后它将丢失
我这样做是为了检索
public void method(type)
{
string selection = dropdownlist1.selectedItem.text;
Viewstate["selectionValue"] = selection;
dropdownlist1.items.clear();
if(type == "Student")
{
dropdownlist1.items.add("abc");
dropdownlist1.items.add("xyz");
}
}
但这一行出现了一个例外:
string selection = dropdownlist1.selectedItem.text;
异常消息:
{对象引用未设置为对象的实例}
我知道为什么会这样。因为当第一次加载
dropdownlist1
时,它找不到dropdownlist
的对象,所以出现了异常。我的任务是检索dropdownlist1
选择值,该值即使在postback
之后也不会丢失 这个问题实际上是关于asp.net页面生命周期的。这里有一个参考:
我猜您是在页面加载时创建下拉列表,但是当发生回发时,您试图在页面控件初始化之前从下拉列表中读取内容
您应该在onload函数中检查IsPostBack,如果它是真的,那么请尝试在那里重建下拉列表。我认为可能会发生这种情况,因为该行运行时下拉列表可能没有任何项目
string selection = dropdownlist1.selectedItem.text;
被执行
在执行该行之前,您必须确保数据已绑定到下拉列表,或者添加如下条件
string selection="";
if(dropdownlist1.items.count>0)
selection = dropdownlist1.selectedItem.text;
最有可能的情况是,下拉列表中甚至没有一个项目,您正在尝试调用selecteditem.text。所以显示错误消息。设置一个断点,找出为什么DropDownList中没有项目1 您应该首先澄清哪个是
null
。是下拉列表1。选择editem
还是下拉列表1
?我建议使用Viewstate[“selectionValue”]=selection下拉列表的selectedDechanged
事件上的code>语句。然后,我将使用onLoad
事件处理程序中的viewstate内容填充dropdownlist选择
无论如何,我想迈克尔·安德森是对的。您应该花一些时间来理解asp.net的生命周期。误用ASP.NET的事件机制通常是基于对ASP.NET生命周期的理解不足。您是否在下拉列表框中包含了Autopostback=“true”
?