0

我有一个项目使用了许多 FormViews 和 SQLDataSources。我希望 SQLDataSource 的默认行为将空值插入为空。我知道我可以通过为每个参数创建一个插入参数来做到这一点,但这对于必须为更新和插入每个可能为空的参数执行此操作而变得非常陈旧。

<InsertParameters>
    <asp:Parameter Name="Name" ConvertEmptyStringToNull="true" />
</InsertParameters>

在 web.config 或我可以设置的 SQLDataSource 上是否有任何设置?

4

3 回答 3

1

我总是从 Parameter 甚至 SqlDataSource 派生一个新类来更改我想要的默认行为。

public class MyDataSource : SqlDataSource
{        
    public MyDataSource()
    {
        if (HttpContext.Current != null)
        {
            this.ConnectionString = MyCinfig.ConnectionString;
            SelectCommandType = SqlDataSourceCommandType.StoredProcedure;
            CancelSelectOnNullParameter = false;

            this.Updated += new SqlDataSourceStatusEventHandler(NXSDataSource_iudExecuted);
            this.Inserted += new SqlDataSourceStatusEventHandler(NXSDataSource_iudExecuted);
            this.Deleted += new SqlDataSourceStatusEventHandler(NXSDataSource_iudExecuted);
        }
    }
}

对于参数

public class UserIDParameter : Parameter
{
    public UserIDParameter()
    {
        this.Name = "user_id";
        this.DbType = System.Data.DbType.Int32;
    }

    protected override object Evaluate(System.Web.HttpContext context, System.Web.UI.Control control)
    {
        return GetMyCurrentUserID();
    }
}
于 2009-09-25T15:27:21.867 回答
0

我这样做了:

foreach (Parameter p in sqlds.SelectParameters) {
    p.ConvertEmptyStringToNull = true;
}
于 2015-08-27T01:42:51.847 回答
-2

覆盖“选择”事件并分配您需要的所有内容

于 2009-09-25T15:17:18.827 回答