2016-04-18 20 views
1

gridviewの特定の列の値を編集する場合、その値に応じて他の値を変更する必要があります。例えばASP.NETグリッドビューでの変数の編集

トラックディーゼル列の値を編集http://i.imgur.com/phfVtUq.pngは、KMPerLiterとRandsPerKM値は、その値及びその逆応じて変更されなければなりません。これはgridviewの編集欄内で行われなければならない

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

:次のように式があります。

これらの値はすべて、データベースのテーブルに格納されます。ここで

は、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> 

ありがとう!

+0

SQL Serverタグが必要ないとは思わない –

+0

どうしたらいいですか?すべてのデータベースに関連しています。グリッドビューのデータは、接続されたSQLデータベースから取得されます。 – marnouxmanser

+0

いくつかのコードを入れてください。 –

答えて

1

、そして、あなたの条件に応じて変更し、グリッド表示値を拾うために仮想テーブルを作成します。ストアドプロシージャ

Create Proc _SPUpdateTableName 
@id int, 
@truckvalue numeric(18,0) 
as 
begin 
    Update TableName set KMPerLiter = TotaKM/(@truckvalue+TrailerDiesel) , TruckDiesel = @truckvalue where ID [email protected] 
end 
の作成 あなたはパラメータを計算し、あなたのUpdateCommandのに割り当てることができRowUpdate方法で

<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> 

またはその他:SqlDataSourceコントロールコードに

文のパラメータ:

方法2:

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 { } 
     } 

注:これらのコードは、私はあなたのrequirmentに従ってあなたの状況ではないtested.Changeためappicableになります考え、論理上だけです。

+0

ありがとう、ロジャリン!素晴らしい答え。 – marnouxmanser

+0

あなたの問題を解決するのは私の喜びです。 –

0

必要がありません...唯一の方法1再びグリッド表示にそれを再割り当て

関連する問題