C# ASP.NET中的DropDownList错误
这是我的drpdownlistC# ASP.NET中的DropDownList错误,c#,asp.net,C#,Asp.net,这是我的drpdownlist <asp:DropDownList ID="DriverGender" runat="server"> <asp:ListItem Text="M" Value="M"></asp:ListItem> <asp:ListItem Text="F" Value="F"></asp:ListItem>
<asp:DropDownList ID="DriverGender" runat="server">
<asp:ListItem Text="M" Value="M"></asp:ListItem>
<asp:ListItem Text="F" Value="F"></asp:ListItem>
</asp:DropDownList>
但这是我经常遇到的错误:
异常详细信息:System.NullReferenceException:Object reference未设置为对象的实例。请查看
(String)DataReaderObj[“性别”]
的值,可能是它的null(空字符串)或与“M”或“F”不匹配的字符串。这是三件事之一,我打赌它是第二件事
DriverGender
或其项
集合为空DriverGender
中没有值等于DataReaderObj[“性别”]
值的项
DataReaderObj
为空例如,对于数字2,您需要一个包含在
DriverGender
中的项目,该项目的值(而不是Text
)正好等于DataReaderObj[“gender”]表示的任何文本值
我确实检查了,并且从数据库返回了正确的值。是中继器或网格视图中的DriverGender控件吗?代码背后的哪个事件正在执行该代码?(询问DriverGender是否已实例化。)另外,来自数据库的值是否大写?来自数据库的值中可能有前导空格或尾随空格。@Michael Liu:是的,有一些尾随空格使用trim()方法删除,现在选择了正确的值。是,但在执行该行代码时,该值是否在DriverGender
的值列表中?你确定吗?您只需调试代码并逐步验证即可。我使用了一个a标签来显示数据库中的值,它确实显示了正确的答案,但这并不意味着它包含在DriverGender
中。再次,在执行该行之前,逐步检查项
集合,并确保具有该值
属性的项存在。感谢你Justin。我调试并发现从数据库中提取的值为“M”(即带有一些空格的M)有趣的是,一个程序员坚持告诉你“从数据库中获取正确的值”,而实际上它不是正确的值(“M”而不是“M”),有一些答案告诉你这一点,没有一个被接受为答案,其中一个甚至没有投票。你认为人们应该帮助你,而你甚至不能放弃投票或标记为正确答案。。。
DriverGender.Items.FindByValue((String)DataReaderObj["gender"]).Selected = true;
DriverGender.Items.FindByValue((String)DataReaderObj["gender"].trim()).Selected = true;