Asp.net 如何在事件上修改sql数据源参数?

Asp.net 如何在事件上修改sql数据源参数?,asp.net,datasource,Asp.net,Datasource,以下是我的设想: Iv将我的sqlds的一个参数链接到一个dropDownList(dropDownList.selectedValue),但我希望这样,当所选项目为“”(pageload上添加了一个没有文本的项目,以便让用户选择一个空值,排序),我希望sqlds传递空值。以下是我尝试过的,但它不起作用(给出的错误是不存在这样的参数: protected void sqldsNewItem_Inserting(object sender, SqlDataSourceCommandEventArg

以下是我的设想:

Iv将我的sqlds的一个参数链接到一个dropDownList(dropDownList.selectedValue),但我希望这样,当所选项目为“”(pageload上添加了一个没有文本的项目,以便让用户选择一个空值,排序),我希望sqlds传递空值。以下是我尝试过的,但它不起作用(给出的错误是不存在这样的参数:

protected void sqldsNewItem_Inserting(object sender, SqlDataSourceCommandEventArgs e)
{
    DropDownList ddl = dwNewItem.FindControl("ddlEffects") as DropDownList;
    if (ddl.SelectedItem.Text == "")
    {
        e.Command.Parameters["effect"].Value = null;
        e.Command.Parameters["numberOfTurns"].Value = null;
    }
}
(我使用FindControl是因为所讨论的dropDownList位于模板中。)

首先,我是如何将其绑定到SQLD的:

                    <asp:ControlParameter ControlID="dwNewItem$ddlEffects" Name="effect" PropertyName="SelectedValue"
                    DbType="int64" />


谢谢大家!

我想你们应该传递DBNull.Value而不是null。另外,放一个断点,检查e.Command.Parameters有多少个参数?它是否显示0?如果有,尝试用e.Command.Parameters.Add添加,而不是调用setter。谢谢,伙计,但问题是我忘记了sqlds自动添加@t前缀o参数名称。现在可以使用了,谢谢!