Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 回发后检索dropdownlist选择_C#_Asp.net - Fatal编程技术网

C# 回发后检索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值时,回发后它将丢失 我这样做是为了检索

我使用下面给出的方法在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”]=selectionselectedDechanged
事件上的code>语句。然后,我将使用
onLoad
事件处理程序中的viewstate内容填充dropdownlist选择


无论如何,我想迈克尔·安德森是对的。您应该花一些时间来理解asp.net的生命周期。误用ASP.NET的事件机制通常是基于对ASP.NET生命周期的理解不足。

您是否在下拉列表框中包含了
Autopostback=“true”