我一Decimal类型的字段(valueMax).可以为空.
在formview(直接绑定到数据源控件了)中
<EditItemTemplate>
<asp:Textbox Text='<%# Bind("valueMax") %>'…… 
</EditItemTemplate>
更新的时候,如果改文本框为空,就会出现类型转换错误,该怎么处理?
怎么让这个valueMax为空时不会传,或是有其它什么好方法?

解决方案 »

  1.   

      <UpdateParameters>
     <asp:Parameter Name="ValueMax" Type="Decimal" DefaultValue="0" />
      </UpdateParameters>
      

  2.   

    DefaultValue 不是Parameter的有效属性 -_-#
      

  3.   

    由于“生成INSERT、UPDATE以及DELETE语句”选项仅在从一个表中选择了一些列之后才可用,如果要弄一个复杂些的查询,那么你就不得不像我们在第一步中做的那样,自己编写INSERT、UPDATE以及DELETE语句。通常,为了显示的需要,SELECT语句会使用JOIN来从一个或多个子表中查找数据(比如在显示产品信息时,我们还需要从Categories表中得到相应CategoryName字段)。但同时我们可能仍然希望允许用户编辑、更新或插入(译者注:原文就是这样的,实际上应该是增删改操作)数据到“核心”表中(这里就是Products表)。 虽然可以通过手工方式输入INSERT、UPDATE以及DELETE语句,但还是请考虑一下下面的节约时间的小贴士。首先将SqlDataSource设置为只仅可以返回Products表中的数据。使用“配置数据源”向导的“指定一个表或视图的列”页,这样你就可以自动的创建INSERT、UPDATE以及DELETE语句。在完成了这个向导之后,再从属性窗口中配置SelectQuery(或者回到“配置数据源”向导,只不过这次使用“指定一个自定义SQL语句或存储过程”)。然后修改SELECT语句以给它加上JOIN。这样,你既通过自动生成SQL语句而节约了时间,又可以自定义SELECT语句以使其更加复杂。 自动生成INSERT、UPDATE以及DELETE语句的另一个限制是,它们的列(只有INSERT和UPDATE,这里不关DELETE的事)都是基于SELECT语句所返回的列的。然而,我们可能需要更新或插入更多或更少的字段。比如在第二步的例子中,我们可能希望UnitPrice BoundField是只读的,这时它就不应该出现在UpdateCommand中。或者我们可能希望给表中某个并没有显示在GridView中的字段设置一个值,比如当添加一个新记录时,我们可能希望把QuantityPerUnit设置为“TODO”。 如果有这样的自定义需求,你就需要通过属性窗口,或是向导中的“指定一个自定义SQL语句或存储过程”选项,或是声明标记代码来手工的完成这些工作。 注意:当添加一个在数据Web控件中没有相应字段的参数时,记住一定要通过某种方式为这个参数赋值。这个参数可以:直接在InsertCommand或UpdateCommand中硬编码;来自某个预定义的源(QueryString、Session、Web控件……);或是像我们在前一节教程中看到的那样通过编程的方式来进行赋值。
    http://www.cnblogs.com/Reeezak/archive/2007/08/18/861234.html
      

  4.   

    方法1:推荐
    在EditItemTemplate中使用验证控件验证文本框不能为空方法2:
    写SqlDataSource控件的Updating事件
        protected void SqlDataSource1_Updating(object sender, SqlDataSourceCommandEventArgs e)
        {
            SqlDataSource1.UpdateParameters["ValueMax"].DefaultValue = "0";
        }方法3:
    修改参数的ConvertEmptyStringToNull属性为false
                <UpdateParameters>
                    <asp:Parameter ConvertEmptyStringToNull="False" Name="ValueMax" Type="Decimal" DefaultValue="0" />
                </UpdateParameters>
      

  5.   

    @amandag
    早干嘛去了,都手工完成了..
    泪奔..