C# 如何从asp:Dropdownlist中选择从C代码后面加载页面的项目?

C# 如何从asp:Dropdownlist中选择从C代码后面加载页面的项目?,c#,asp.net,data-binding,drop-down-menu,listitem,C#,Asp.net,Data Binding,Drop Down Menu,Listitem,我尝试了很多文章,比如下面的文章来完成我的任务,但是没有成功,因为我总是会遇到一个NullReferenceException,我已经将一个数据库表列绑定到下拉列表中,在页面加载时,我想根据数据库中的值选择一个项目,它是列出的项目之一。请帮帮我 txt_examtype.DataSource = dt;//txt_examtype is the dropdownlist txt_examtype.DataTextField = "ExamTypeName";

我尝试了很多文章,比如下面的文章来完成我的任务,但是没有成功,因为我总是会遇到一个NullReferenceException,我已经将一个数据库表列绑定到下拉列表中,在页面加载时,我想根据数据库中的值选择一个项目,它是列出的项目之一。请帮帮我

txt_examtype.DataSource = dt;//txt_examtype is the dropdownlist
                txt_examtype.DataTextField = "ExamTypeName";
                txt_examtype.DataValueField = "ExamTypeName";
                txt_examtype.DataBind();


String examtype = dt.Rows[0]["ExamType"].ToString().Trim();
                ListItem myitem = txt_examtype.Items.FindByValue(examtype);
                txt_examtype.SelectedValue = myitem.Value;

您应该设置SelectedIndex而不是SelectedValue。这是安全使用的:

txt_examtype.SelectedIndex = txt_examtype.Items.IndexOf(txt_examtype.Items.FindByValue(examtype));
试试这个代码

 txt_examtype.SelectedValue =  dt.Rows[0]["ExamType"].ToString()

在哪一行获得异常?我假设myitem为null,因此没有值为examtype的ListItem。也许您必须使用Items.FindByTextexamtype;。使用调试器,下拉列表包含哪些项?可能需要为DataTextField和/或DataValueField指定不同的列。它是同一列。现在在本例中,examtype的值是MCQ,所以myitem不能为null,对吗?我不知道为什么同时使用DataTextField和DataValueField,只是想将列ExamTypeName的值绑定到这个dropdownlist,请纠正我!如果项目不存在,则按文本或按值查找将是相同的。我建议使用ifmyitem!=null txt_examtype.SelectedValue=myitem.Value;这从来没有给我一个例外,但它没有选择页面加载时的值,但感谢afzalulhafzalulh,每当列表项是静态的,而不是从数据库加载时,这种方法对我有效。