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"之间没有隐式转换

您的帮助将不胜感激。

Dropdownlist.selecteditem.value = null

问题是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);

因为如果值为 nullConvert.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;