<asp:TemplateField HeaderText="價格" SortExpression="price1">
                            <ItemTemplate><asp:Label ID="Label5" runat="server" Text='<%# Eval("price1")%>'></asp:Label></ItemTemplate>
                                <ItemStyle HorizontalAlign="Center" />
                            <EditItemTemplate><asp:TextBox ID="tb_price" runat="server" Text='<%# Eval("price1")%>'></asp:TextBox></EditItemTemplate>
                        </asp:TemplateField>.......
<asp:SqlDataSource ....
UpdateCommand="update_sheet" UpdateCommandType="StoredProcedure">
                    <UpdateParameters>
                        <asp:Parameter Name="price1" Type="decimal" />                 
                    </UpdateParameters>
这样传不了值啊,要这样处理。

解决方案 »

  1.   

      上面的代码可以实现更新啊!运行时让Gridview处于编辑状态 就可以.
      也可以换种写法    用
      <UpdateParameters>
           <asp:ControlParameter 
               Name="price1" 
               Type="decimal" 
               ControlID="tb_price" 
               PropertyName="Text" />
       </UpdateParameters>
      替换  上面的
      <UpdateParameters>
         <asp:Parameter Name="price1" Type="decimal" />                 
      </UpdateParameters>但是要更新的 数据类型 是 decimal 的,有可能会 出问题.
              
                       
      

  2.   

    那为什么当我点击“更新”时,提示不能把null值插入到表中(字段我设置为not null),但文本框里确实有值啊?
      

  3.   

    <asp:SqlDataSource ....
    UpdateCommand="update_sheet" UpdateCommandType="StoredProcedure">
                        <UpdateParameters>
                            <asp:Parameter Name="price1" Type="decimal" />                 
                        </UpdateParameters>
    上面的 " update_sheet " 是存储过程名吧, 是一个参数吗? 
    更新是有条件的,
    <UpdateParameters>     
       ...     
    </UpdateParameters> 
    里只有一个参数,一定不能实现更新, 至少有一个where子句,即
    <UpdateParameters>     
       ...     
    </UpdateParameters> 中至少有两个参数.
      

  4.   

    不是这个原因,我把全部代码贴出来。
    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource1" AllowSorting="True" CellPadding="4" ForeColor="#333333" GridLines="None" BorderStyle="None" Width="100%">
                        <Columns>
                            <asp:TemplateField HeaderText="ID" SortExpression="id">
                                <ItemTemplate><asp:Label ID="Label1" runat="server" Text='<%# Eval("id")%>'></asp:Label></ItemTemplate>
                                    <ItemStyle HorizontalAlign="Center" /> 
                                <FooterTemplate><asp:TextBox runat="server" Width="70%"></asp:TextBox></FooterTemplate>   
                                <FooterStyle HorizontalAlign="Center" />  
                            </asp:TemplateField>
                                                    <asp:TemplateField HeaderText="價格(36*48)" SortExpression="price1">
                                <ItemTemplate><asp:Label ID="Label5" runat="server" Text='<%# Eval("price1")%>'></asp:Label></ItemTemplate>
                                    <ItemStyle HorizontalAlign="Center" />
                                <EditItemTemplate><asp:TextBox ID="price1" runat="server" Text='<%# Eval("price1")%>'></asp:TextBox></EditItemTemplate>
                                <FooterTemplate><asp:TextBox ID="TextBox4" Width="70%" runat="server"></asp:TextBox></FooterTemplate>
                                    <FooterStyle HorizontalAlign="Center" />
                            </asp:TemplateField>
                            <asp:TemplateField>
                                <ItemTemplate><asp:LinkButton runat="server" CommandName="edit" Text="修改"></asp:LinkButton></ItemTemplate>
                                <EditItemTemplate><asp:LinkButton ID="ensure1" runat="server" CommandName="update" Text="确定"></asp:LinkButton><asp:LinkButton ID="cancel1" runat="server" CommandName="cancel" Text="取消"></asp:LinkButton></EditItemTemplate>
                                <FooterTemplate><asp:Button runat="server" Text="确定" /><asp:Button ID="Button2" runat="server" Text="取消" /></FooterTemplate>
                            </asp:TemplateField></asp:GridView>
    <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
                        SelectCommand="SELECT [id], [no], [manu], [copper], [ply], [price1], convert(char(10),addtime,120) addtime, [addman] FROM [sheet]" 
                        UpdateCommand="UPDATE sheet SET price1 = @price1 WHERE (id = @id)">
                        <UpdateParameters>
                            <asp:Name="price1" Type="String" />
                            <asp:Parameter Name="id" Type="Int32" />
                        </UpdateParameters>                </asp:SqlDataSource>这里的price1参数获取不到EditItemTemplate中的值,传过去为null。如果我把DefaultValues设置一个值,那么就会把这个默认值传过去。
    看来半天不知道问题所在。
      

  5.   

    <asp:Name="price1" Type="String" />也要写成
    <asp:Parameter Name="price1" Type="String" />格式