Hi
I have this table with som fruit, and when the user insert a number for how many fruits they want in a textbox. And when the user click on the button it will check if there is 7 fruits in the basket and go to the confirmation page. But I get this error everytime i try.
Value cannot be null.
Parameter name: String
Line 96: int enkeltFrugtVaerdi = int.Parse(Textbox_antal.Attributes["FrugtVaerdi"]);
Heres my code on Default.aspx
<table border="1">
<tr>
<td>Antal</td>
<td><asp:Label ID="Label1" runat="server" Text=""></asp:Label></td>
</tr>
<asp:Repeater ID="Repeater1" runat="server" OnItemDataBound="Repeater1_ItemDataBound">
<ItemTemplate>
<tr>
<td><%#Eval("frugt_navn") %></td>
<td><asp:TextBox ID="txtbox1" runat="server" Width="30"></asp:TextBox></td>
<asp:HiddenField ID="HiddenField1" runat="server" />
</tr>
</ItemTemplate>
</asp:Repeater>
</table>
<asp:Button ID="Button1" runat="server" Text="Læg i kurv" OnClick="Button1_Click1" />
<asp:Label ID="Label_vis" runat="server" Text=""></asp:Label>
Default.aspx.cs
public ValgtFrugt frugtKurv;
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
Repeater1.DataSource = MakeMockTable();
Repeater1.DataBind();
}
}
private static DataTable MakeMockTable()
{
DataTable worktbl = new DataTable();
worktbl.Columns.Add("frugt_id", typeof(int));
worktbl.Columns.Add("vaerdi", typeof(int));
worktbl.Columns.Add("frugt_navn", typeof(string));
DataRow workRow = worktbl.NewRow();
workRow["frugt_id"] = 0;
workRow["vaerdi"] = 1;
workRow["frugt_navn"] = "Banan";
worktbl.Rows.Add(workRow);
workRow = worktbl.NewRow();
workRow["frugt_id"] = 1;
workRow["vaerdi"] = 1;
workRow["frugt_navn"] = "Æble";
worktbl.Rows.Add(workRow);
workRow = worktbl.NewRow();
workRow["frugt_id"] = 2;
workRow["vaerdi"] = 1;
workRow["frugt_navn"] = "Blomme";
worktbl.Rows.Add(workRow);
workRow = worktbl.NewRow();
workRow["frugt_id"] = 3;
workRow["vaerdi"] = 7;
workRow["frugt_navn"] = "Melon";
worktbl.Rows.Add(workRow);
return worktbl;
}
protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
TextBox Textbox_antal = FindControl("txtbox1") as TextBox;
if (Textbox_antal == null) return;
Textbox_antal.Attributes.Add("FrugtID", string.Format("{0}", ((DataRow)e.Item.DataItem)["frugt_id"]));
Textbox_antal.Attributes.Add("FrugtVaerdi", string.Format("{0}", ((DataRow)e.Item.DataItem)["vaerdi"]));
Textbox_antal.Attributes.Add("FrugtNavn", string.Format("{0}", ((DataRow)e.Item.DataItem)["frugt_navn"]));
}
}
protected void Button1_Click1(object sender, EventArgs e)
{
int totalvaerdi = 0;
List<ValgtFrugt> valgteFrugter = new List<ValgtFrugt>();
foreach (RepeaterItem item in Repeater1.Items)
{
if (item.ItemType == ListItemType.Item || item.ItemType == ListItemType.AlternatingItem)
{
TextBox Textbox_antal = item.FindControl("txtbox1") as TextBox;
if (Textbox_antal == null) continue;
string frugtNavn = Textbox_antal.Attributes["FrugtNavn"];
int enkeltFrugtVaerdi = int.Parse(Textbox_antal.Attributes["FrugtVaerdi"]);
int enkeltFrugtAntal = int.Parse(Textbox_antal.Text);
totalvaerdi += (enkeltFrugtVaerdi * enkeltFrugtAntal);
if (enkeltFrugtAntal > 0)
{
ValgtFrugt frugtenDerskalTilfoejes = new ValgtFrugt();
frugtenDerskalTilfoejes.FrugtNavn = frugtNavn;
frugtenDerskalTilfoejes.FrugtVaerdi = enkeltFrugtVaerdi;
frugtenDerskalTilfoejes.Antal = enkeltFrugtAntal;
valgteFrugter.Add(frugtenDerskalTilfoejes);
}
}
}
if (totalvaerdi == 7)
{
Session["ValgteFrugter"] = valgteFrugter;
Response.Redirect("bekraeft.aspx");
}
else
{
Label_vis.Text = "Du kan kun bestille 7 stk frugt";
}
}
bekraeft.aspx
<asp:Label ID="Label1" runat="server" Text=""></asp:Label>
bekraeft.aspx.cs
public ValgtFrugt frugtKurv;
protected void Page_Load(object sender, EventArgs e)
{
List<ValgtFrugt> valgteFrugter = (List<ValgtFrugt>)Session["ValgteFrugter"];
foreach (ValgtFrugt frugt in valgteFrugter)
{
Label1.Text += string.Format("{0} ({1} stk.)", frugt.FrugtNavn, frugt.Antal);
}
}
ValgtFrugt.cs
public class ValgtFrugt
{
public int FrugtID { get; set; }
public string FrugtNavn { get; set; }
public int Antal { get; set; }
public int FrugtVaerdi { get; set; }
}
Hope someone could help me