Dropdownlist.selecteditem.value = null
本文关键字:null value selecteditem Dropdownlist | 更新日期: 2023-09-27 18:32:05
我有 12 个参数的存储过程。参数可以为空。我还有 12 个下拉列表。下拉列表值将添加到 sp。我想在下拉列表.selecteditem.value = null 时将下拉列表中的空值传递到过程中。我尝试了以下分配:
int typeid = (Convert.ToInt16(ddlType.SelectedValue.ToString())) == null ? DBNull.Value : (int)(Convert.ToInt16(ddlType.SelectedValue.ToString()));
但我得到错误:
无法确定条件表达式的类型,因为"System.DBNull"和"int"之间没有隐式转换
您的帮助将不胜感激。
问题是DBNull.Value
无法分配给int
。您有一个选择是执行以下操作:
int typeid = string.IsNullOrEmpty(ddlType.SelectedValue) ?
default(int) :
Convert.ToInt32(ddlType.SelectedValue);
另一种选择是使用 int?
:
int? typeid = string.IsNullOrEmpty(ddlType.SelectedValue) ?
(int?)null :
(int?)Convert.ToInt32(ddlType.SelectedValue);
还有很多其他选择。但是,如果您尝试将值获取到int
,并且稍后知道是否选择了某些内容,那么这两个选项非常简单。在第一种情况下,您可以通过稍后将其与default(int)
进行比较来推断它是否更早null
。在第二种情况下,它更加直接,因为您可以说typeid.HasValue
,看看它是否null
。
现在,我取消了ToString()
电话,因为如果null
SelectedValue
,它们就会失败。但是,如果这是一个 Windows 窗体应用程序而不是 Web 窗体应用程序(这是我推断的),那么您需要将该值转换为如下所示的字符串:
var val = Convert.ToString(ddlType.SelectedValue);
int? typeid = string.IsNullOrEmpty(val) ?
(int?)null :
(int?)Convert.ToInt32(ddlType.SelectedValue);
因为如果值为 null
,Convert.ToString
将返回一个空字符串。
变量声明为 int? typeID
这将接受整数和空值
在这里,上面的声明表明它是可为空的
希望对你有帮助
试试这个
int typeid = (Convert.ToInt16(ddlType.SelectedValue.ToString())) == null ? (object)DBNull.Value: (int)(Convert.ToInt16(ddlType.SelectedValue.ToString()));
为什么不首先使用可为空的整数?
int? typeid = string.IsNullOrEmpty(ddlType.SelectedValue)? null: Convert.ToInt16(ddlType.SelectedValue);
类型ID 将为空,如果您的下拉列表没有 vallue。如果是这样,它将持有它。
DropdownList 的 SelectedValue 属性返回一个字符串,因此不需要执行 ToString 转换。
int不是可为 null 的类型,因此不能将 null 值转换为 int。此外,int 是 int32,而不是 int16。
int? typeId = ddlType.SelectedValue != null : Convert.ToInt32(ddlType.SelectedValue) ? null;