【问题标题】:ASP.NET Grid View edit with variables带有变量的 ASP.NET 网格视图编辑
【发布时间】:2016-08-09 18:17:45
【问题描述】:

在我的gridview 中编辑某些列值时,其他值需要根据该值进行更改。

例如:http://i.imgur.com/phfVtUq.png

编辑 Truck Diesel 列值时,必须根据该值更改 KMPerLiter 和 RandsPerKM 值,反之亦然。公式如下:

KMPerLiter = TotaKM/TruckDiesel+TrailerDiesel and RandsPerKM = Amount/TotalKM.

这必须在gridview 的编辑列中完成。

然后将所有这些值存储在数据库的表中。

这是 ASP.Net html 源代码:

     UpdateCommand="UPDATE [Loads] SET [loadDate] = @loadDate, [loadDay] = @loadDay, [loadClient] = @loadClient, [loadDriver] = @loadDriver, [loadLoadingPoint1] = @loadLoadingPoint1, [loadLoadingPoint2] = @loadLoadingPoint2, [loadLoadingPoint3] = @loadLoadingPoint3, [loadOffloadingPoint1] = @loadOffloadingPoint1, [loadOffloadingPoint2] = @loadOffloadingPoint2, [loadOffloadingPoint3] = @loadOffloadingPoint3, [loadStops] = @loadStops, [loadNumber] = @loadNumber, [loadPodNumber] = @loadPodNumber, [loadAmount] = @loadAmount, [loadTruckReg] = @loadTruckReg, [loadTrailerReg] = @loadTrailerReg, [loadCategory] = @loadCategory, [loadDayOut] = @loadDayOut, [loadNightOut] = @loadNightOut, [loadOdoStart] = @loadOdoStart, [loadOdoEnd] = @loadOdoEnd, [loadTruckDiesel] = @loadTruckDiesel, [loadTrailerDiesel] = @loadTrailerDiesel, [loadInvoiceNumber] = @loadInvoiceNumber, [loadReceiptNumber] = @loadReceiptNumber, [loadKMperLiter] = @loadKMperLiter, [loadRandsPerKM] = @loadRandsPerKM, [loadDriverWage] = @loadDriverWage, [clientRecieved] = @clientRecieved, [loadTotalKM] = @loadTotalKM, [note] = @note WHERE [loadID] = @loadID">
    <UpdateParameters>
        <asp:Parameter DbType="Date" Name="loadDate" />
        <asp:Parameter Name="loadDay" Type="String" />
        <asp:Parameter Name="loadClient" Type="String" />
        <asp:Parameter Name="loadDriver" Type="String" />
        <asp:Parameter Name="loadLoadingPoint1" Type="String" />
        <asp:Parameter Name="loadLoadingPoint2" Type="String" />
        <asp:Parameter Name="loadLoadingPoint3" Type="String" />
        <asp:Parameter Name="loadOffloadingPoint1" Type="String" />
        <asp:Parameter Name="loadOffloadingPoint2" Type="String" />
        <asp:Parameter Name="loadOffloadingPoint3" Type="String" />
        <asp:Parameter Name="loadStops" Type="Int32" />
        <asp:Parameter Name="loadNumber" Type="String" />
        <asp:Parameter Name="loadPodNumber" Type="String" />
        <asp:Parameter Name="loadAmount" Type="Decimal" />
        <asp:Parameter Name="loadTruckReg" Type="String" />
        <asp:Parameter Name="loadTrailerReg" Type="String" />
        <asp:Parameter Name="loadCategory" Type="String" />
        <asp:Parameter Name="loadDayOut" Type="Int32" />
        <asp:Parameter Name="loadNightOut" Type="Int32" />
        <asp:Parameter Name="loadOdoStart" Type="Int32" />
        <asp:Parameter Name="loadOdoEnd" Type="Int32" />
        <asp:Parameter Name="loadTruckDiesel" Type="Decimal" />
        <asp:Parameter Name="loadTrailerDiesel" Type="Decimal" />
        <asp:Parameter Name="loadInvoiceNumber" Type="String" />
        <asp:Parameter Name="loadReceiptNumber" Type="String" />
        <asp:Parameter Name="loadKMperLiter" Type="Decimal" />
        <asp:Parameter Name="loadRandsPerKM" Type="Decimal" />
        <asp:Parameter Name="loadDriverWage" Type="Int32" />
        <asp:Parameter Name="clientRecieved" Type="String" />
        <asp:Parameter Name="loadTotalKM" Type="Int32" />
        <asp:Parameter Name="note" Type="String" />
        <asp:Parameter Name="loadID" Type="Int32" />
    </UpdateParameters>

提前致谢!

【问题讨论】:

  • 我认为你不需要 sql-server 标签
  • 为什么不呢?这都是与数据库相关的。网格视图中的数据来自连接的 sql 数据库。
  • 放一些代码。让我们有更好的想法
  • 在编辑时,列可以计算出要修改的值,然后对同一个表调用更新语句并再次绑定GridView。
  • @Rojalin Sahoo 你能告诉我怎么做吗?

标签: c# html asp.net sql-server gridview


【解决方案1】:

方法一: 创建存储过程

Create Proc _SPUpdateTableName
@id int,
@truckvalue numeric(18,0)
as 
 begin
   Update TableName set  KMPerLiter = TotaKM/(@truckvalue+TrailerDiesel) , TruckDiesel = @truckvalue  where ID =@id
end

关于SqlData源码:

<asp:SqlDataSource ID="LocalServerDataSource" runat="server" ConnectionString="<%$ ConnectionStrings:SiteSqlServer %>" UpdateCommand="_SPUpdateTableName" UpdateCommandType="StoredProcedure">
        <UpdateParameters>
            <asp:Parameter Name="id" Type="Int32" />
            <asp:Parameter Name="truckvalue " Type="Decimal" />
        </UpdateParameters>
    </asp:SqlDataSource>

或者Else in RowUpdate Method你可以计算参数并将它们分配给你的UpdateCommand语句参数:

方法二:

  protected void grdvechile_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {
            try
            {
                decimal truckvalue= Convert.ToDecimal( grdvechile.Rows[e.RowIndex].Cells[1].Text);
               // fetch all value as needed and typecast
               decimal KMPerLiter = TotaKM/(truckvalue+TrailerDiesel);
               //Pass your required parameter
                LocalServerDataSource.UpdateParameters["truckvalue"].DefaultValue = truckvalue;
                LocalServerDataSource.UpdateParameters["KMPerLiter "].DefaultValue = KMPerLiter ;
                LocalServerDataSource.Update();
            }
            catch { }
        }

注意:这些代码仅适用于我认为适用于未经测试的情况的逻辑。根据您的要求进行更改。

【讨论】:

  • 非常感谢Rojalin!很好的答案。
【解决方案2】:

不需要..只创建一个虚拟表来获取网格视图值,然后根据您的要求更改它,再次将其重新分配给网格视图

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-26
    • 1970-01-01
    • 2013-11-16
    • 1970-01-01
    • 1970-01-01
    • 2021-11-08
    相关资源
    最近更新 更多