webForumDet fria alternativet

Kan jag komma åt en EditItemTemplate textbox i codebehind?

.NET

2 svar · 273 visningar · startad av CatZ

Medlem sedan jan. 20022 440 inlägg
Frågan#1

Jag har följande kod:

<asp:TemplateColumn HeaderText="Price">
	<HeaderStyle Width="70px" />
	<ItemTemplate>
		<asp:Label ID="lblPriceItem" runat="server" 
			Text='<%# DataBinder.Eval(Container, "DataItem.Price", "{0:C}") %>'
			Width="70px" />
	</ItemTemplate>
	<EditItemTemplate>
		<asp:TextBox 
			ID="txtPriceEdit" 
			runat="server" 
			Text='<%# DataBinder.Eval(Container, "DataItem.Price", "{0:C}") %>'
			Width="70px" />
	</EditItemTemplate>
</asp:TemplateColumn>

När jag sparar informationen har jag gjort såhär, användaren fyller i antal och pris och programmet räknar ut det totala priset som är det som sparas i databasen.

Det fungerar toppen men jag skulle vilja att när användaren klickar på update så ska värdet i textboxen "txtPriceEdit" visa priset

<%# DataBinder.Eval(Container, "DataItem.Price", "{0:C}") / Quantity %>

Jag får det att lyckas men det genererar ett fel de gånger som jag försöker dela med noll. Kan man ändra detta i code behind på något vis?

Medlem sedan dec. 200471 inlägg
#2

Du får helt enkelt fånga upp felet och hantera detta med användning av try/catch-satser.

Exempelvis:

catch (DivideByZeroException dbzex)
{

 // kod för att hantera felmeddelandet
 logger.Error("Ett fel genererades", dbzex);
 this.lblError.Text = "Du kan inte dela med noll!";

}

Medlem sedan jan. 20022 440 inlägg
#3

Lite korspostning :D Lösningen var iaf

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
261 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)