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