CatZMedlem sedan jan. 20022 440 inlägghar följande lilla kodsnutt
<asp:TextBox ID="txtPriceEdit" runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.Price", "{0:C}") %>' />
myTemp = CType(e.Item.FindControl("txtPriceEdit"), TextBox).Text
If (IsDBNull(myTemp)) Or (myTemp = "") Or (Not IsNumeric(myTemp)) Then
myOrderDetailsView.Item(e.Item.ItemIndex).Item("Price") = DBNull.Value
Else
myPrice = Double.Parse(myTemp, Globalization.NumberStyles.Any)
myPrice = (myPrice * myQuantity)
myOrderDetailsView.Item(e.Item.ItemIndex).Item("Price") = myPrice
End If
Den skriver ut priset på varje order-rad.
Jag gör som så att användaren ska få skriva in antal och pris per styck så räknar programmet ut totalbeloppet på varje order rad.
Försökte med följande kod
<asp:TextBox ID="txtPriceEdit" runat="server"
Text='
<%# (DataBinder.Eval(Container, "DataItem.Price", "{0:C}") / DataBinder.Eval(Container, "DataItem.Qty")) %>
' />
Men det blir ju fel de gånger som ändera qty eller price är tomt (DBNull) Hur ska jag lösa detta på bästa sätt?
Alltså det är att dela Totalpris med Antal i txtPriceEdit jag vill.
@ndersMedlem sedan juni 200032 967 inlägg
CatZMedlem sedan jan. 20022 440 inläggHmm, nej jag ger mig inte. Hur kommer jag åt en EditItemTemplate textbox i codebehind?
<asp:TemplateColumn HeaderText="Price">
<HeaderStyle Width="70px" />
<ItemTemplate>
<asp:Label ID="lblPriceItem" runat="server"
Text='<%# DataBinder.Eval(Container, "DataItem.Price", "{0:C}") %>'
Width="70px">
</asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="txtPriceEdit" runat="server"
Text='<%# DataBinder.Eval(Container, "DataItem.Price", "{0:C}") %>'
Width="70px">
</asp:TextBox>
</EditItemTemplate>
</asp:TemplateColumn>
Kan man styra vad som händer i editens TextBox genom Code Behind? Hur gör jag så att OM det finns ett värde i lblPriceItem att det delas med Qty?
CatZMedlem sedan jan. 20022 440 inläggDet var rätt enkelt, lösningen till på editcommand blir ungefär som jag gjort min updatecommand fast baklänges :)
Private Sub DataGrid1_EditCommand1(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGrid1.EditCommand
Dim myQty As Integer = 0
Dim myTemp As String
Dim myPrice As Double = 0
Select Case Me.txtOrderStatus.Text
Case Else
If ValidOrder() Then
Me.DataGrid1.EditItemIndex = e.Item.ItemIndex
' Qty
myTemp = myOrderDetailsView.Item(e.Item.ItemIndex).Item("Qty").ToString
If (Not MyUtils.ValueHasNotBeenSupplied(myTemp)) And (IsNumeric(myTemp)) Then
myQty = myTemp
End If
' Price
myTemp = CType(e.Item.FindControl("lblPriceItem"), Label).Text
If (Not MyUtils.ValueHasNotBeenSupplied(myTemp)) And (IsNumeric(myTemp)) Then
' do nothing
myPrice = Double.Parse(myTemp, Globalization.NumberStyles.Any)
myOrderDetailsView.Item(e.Item.ItemIndex).Item("UnitPrice") = myPrice
Else
myOrderDetailsView.Item(e.Item.ItemIndex).Item("UnitPrice") = DBNull.Value
End If
BindGrid()
End If
End Select
End Sub