如何默认所有SqlDataSource参数将空字符串转换为null?

时间:2009-09-25 15:12:32

标签: c# sql-server sqldatasource formview

我有一个项目,它使用了许多FormViews和SQLDataSources。我希望SQLDataSource的默认行为将空值插入为null。我知道我可以通过为每个参数创建一个insert参数来实现这一点,但是这对于必须执行此操作以进行更新并插入可能为空的每个参数都非常老。

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

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

3 个答案:

答案 0 :(得分: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();
    }
}

答案 1 :(得分:0)

我这样做了:

$upload_handler = new UploadHandler();

答案 2 :(得分:-2)

覆盖“选择”事件并指定所需内容