【问题标题】:Data truncated for column total on update更新时截断列总计的数据
【发布时间】:2015-06-29 05:41:29
【问题描述】:

我在 C# 中使用 Telerik,我有 2 个 gridcalculatedcolumn 和 2 个 gridtemplatecolumn,带有页脚和 1 个按钮。在我的表格中,列类型是双倍的。我得到的值是正确的。当我按下按钮时,我试图更新我的数据库上的值,并且我在添加参数的行中截断了列总计的数据。

为什么我会收到此消息以及如何解决此问题?

输入 aspx:

 <telerik:GridTemplateColumn Aggregate="Sum"  FooterText="Total Discount: " DataField="DiscAmount" DataType="System.Decimal" FilterControlAltText="Filter DiscAmount column" HeaderText="DiscAmount(€)" SortExpression="DiscAmount" UniqueName="DiscAmount">
                    <EditItemTemplate>
                        <asp:TextBox ID="DiscAmountTextBox" runat="server" Text='<%# Bind("DiscAmount") %>' AutoPostBack="true"  OnTextChanged="DiscAmount_TextChanged" ></asp:TextBox>
                    </EditItemTemplate>
                    <ItemTemplate>
                        <asp:Label ID="DiscAmountLabel" runat="server" Text='<%# Eval("DiscAmount") %>'></asp:Label>
                    </ItemTemplate>
                </telerik:GridTemplateColumn>
   <telerik:GridTemplateColumn Aggregate="Sum"  FooterText="Total NetAmount: "    DataField="NetAmount" DataType="System.Decimal" FilterControlAltText="Filter  NetAmount column" HeaderText="NetAmount(€)" SortExpression="NetAmount" UniqueName="NetAmount">
                    <EditItemTemplate>
                     <asp:TextBox ID="NetAmountTextBox" runat="server" Text='<%# Bind("NetAmount") %>' Enabled="false" ></asp:TextBox>
                 </EditItemTemplate>
                    <ItemTemplate>
                        <asp:Label ID="NetAmountLabel" runat="server" Text='<%# Eval("NetAmount") %>'></asp:Label>
                    </ItemTemplate>
                </telerik:GridTemplateColumn>

          <telerik:GridCalculatedColumn HeaderText="Total VAT" UniqueName="TotalVAT" DataType="System.Decimal" DataFormatString="{0:F}"
                    DataFields="price,VAT" FooterText="Total Vat : "  Expression="({0}*({1}/100))" 
                    Aggregate="Sum" />
          <telerik:GridCalculatedColumn HeaderText="Total Price" UniqueName="TotalPrice" DataType="System.Decimal" DataFormatString="{0:F}"
                    DataFields="price,DiscAmount,VAT" Expression="(({0}-{1})*({2}/100))+({0}-{1})" FooterText="Total : "
                    Aggregate="Sum" />

aspx.cs:

  GridFooterItem footeritem = (GridFooterItem)RadGrid1.MasterTableView.GetItems(GridItemType.Footer)[0];
                double footervat = Convert.ToDouble( footeritem["TotalVAT"].Text);
                string footerprice =  footeritem["TotalPrice"].Text;
                string footerdisc = footeritem["DiscAmount"].Text;
                string footernetamount = footeritem["NetAmount"].Text;

            string[] words = footernetamount.Split(' ');
            footernetamount = words[2];
            string[] words2 = footerdisc.Split(' ');
            footerdisc = words[2];
            string insdocheader = "UPDATE mytable SET Total=@netAmount, AmountDue=@footerprice,VAT=@footervat,Discount=@footerdisc WHERE DocNo=@docnoparam and DocStatus=@docstatusparam";


               MySqlCommand cmd3 = new MySqlCommand(insdocheader, con2);
               cmd3.Parameters.AddWithValue("docnoparam", DocNoTxtBox.Text);
               cmd3.Parameters.AddWithValue("docstatusparam", 2);
              con2.Open();

            cmd3.Parameters.AddWithValue("netAmount", footernetamount);
            cmd3.Parameters.AddWithValue("footerprice", footerprice);
            cmd3.Parameters.AddWithValue("footervat", footervat);
            cmd3.Parameters.AddWithValue("footerdisc", footerdisc);
                cmd3.ExecuteNonQuery();

更新 我已经更改了此代码并且正在工作!我将 ',' 替换为 '.'

 string[] words = footernetamount.Split(' ');
            footernetamount = words[2];
            string[] words3 = footernetamount.Split(',');
            footernetamount = words3[0] + "." + words3[1];

有没有更简单的方法或者我必须这样做?

【问题讨论】:

  • 在mytable中给出Total的定义
  • 可能是一个舍入问题,你的十进制值比列定义多
  • 如果我在这个错误点上调试它,值是 66,54
  • 你能试试把“66,54”(带逗号)改成“66.54”(带点)吗?还有,请给我关于你的桌子的定义?
  • 我已经更新了我的问题。请看一下

标签: c# asp.net gridview telerik radgrid


【解决方案1】:

我已将 ',' 替换为 '.'并且正在工作

string[] words = footernetamount.Split(' ');
            footernetamount = words[2];
            string[] words3 = footernetamount.Split(',');
            footernetamount = words3[0] + "." + words3[1];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-02
    • 1970-01-01
    • 1970-01-01
    • 2017-03-24
    • 2013-10-14
    • 1970-01-01
    • 2019-08-03
    • 1970-01-01
    相关资源
    最近更新 更多