ערכתי לאחרונה בתאריך 23.12.08 בשעה 09:27 בברכה, ronen333
הנה החלק של הREPEATER בSOURCE-
<table border="1"> <tr> <td> # </td> <td> מוצר </td> <td> כמות </td> <td> מחיר </td> <td> מחק </td> </tr> <asp:Repeater ID="Bucket_Repeater" runat="server"> <ItemTemplate> <tr> <td> <img src="<%#DataBinder.Eval(Container.DataItem, "item_picture")%>" height="120px" width="120px" alt="" /> </td> <td> <%#DataBinder.Eval(Container.DataItem, "item_name")%> </td> <td> <input id="amountbox<%#DataBinder.Eval(Container.DataItem, "item_id")%>" type="text" value="1" /> </td> <td> <%#DataBinder.Eval(Container.DataItem, "item_price")%> </td> <td> <a href='Order.aspx?DeleteID=<%#DataBinder.Eval(Container.DataItem, "item_id")%>'>X</a> </td> </tr> </ItemTemplate> </asp:Repeater> <tr > <td>מחיר כולל:</td> <td colspan="4"> <asp:Label ID="TotalPrice_LBL" runat="server" Text=""></asp:Label> </td> </tr> </table>
|
עכשיו לי דווקא נדמה שהבנת את הבעיה.. אין ID שיכול לקשר בין הDATATABLE לTEXTBOX. אן אני שם פקד INPUT TEXT אז אני יכול לשרשר אילו ID של המוצר אך אני לא יכול לגשת בCODE BEHIND אילו(הוא ללא RUNAT=SERVER, ואם אני שם פקד TEXTBOX של ASP.NET זה ביכלל לא יתן לי כי הפקד רץ כנראה לפני ה<%#DataBinder.Eval(Container.DataItem, "item_id")%> ולא ניתן לשרשר לID שלו את זה.
נניח שיש לי בסל עכשיו כמה מוצרים, ובמוצר הראשון שמים כמות 2 ובמוצר השני שמשאירים כמות 1. המשך הליך קניה. בהמשך הליך קניה אני רוצה בעצם להשים בשורה משוימת שבDATATABLE שלי את הכמות שמשתייחת לכל מוצר. וזאת הבעיה.
הקובץ CS לדעתי קצת יהיה מיותר להוסיף כי הוא פשוט מבצע כל כך הרבה פעולות ובתכ'לס הוא לא משנה כי אין מימוש למה שלא הצלחתי XD וחשוב רק להבין איך ניתן להכניס פקד לא קשור לחלק מREAPTER. אבל אם את רוצה אז בבקשה
:
public partial class Order : System.Web.UI.Page { private Stack MakeCollection() { string st = Session["StoreBucket"].ToString(); string id = ""; Stack mystack = new Stack(); bool Nofirst = false; for (int i = 0; i < st.Length; i++) { if (st[i] == ',') { if (Nofirst == true) { mystack.Push(id); } id = ""; Nofirst = true; } else id += st[i]; } return mystack; } private DataSet GetSelectedProducts(Stack mystack) { if (mystack.Count >0) { DataSet newds = new DataSet(); localhost.Service ms = new localhost.Service(); DataSet products = ms.GetProducts(); DataTable dt = products.Tables[0].Clone(); for (int i = 0; i < products.Tables[0].Rows.Count; i++) { foreach (string id in mystack) { if (id.ToString() == products.Tables[0].Rows[i][0].ToString()) { dt.ImportRow(products.Tables[0].Rows[i]); } } } newds.Tables.Add(dt); return newds; } return null; } private void BindRepeater(DataSet ds) { Bucket_Repeater.DataSource = ds; Bucket_Repeater.DataBind(); } private Stack DeleteIDFromStack(string id, Stack sta) { Stack sta2 = new Stack(); string stackid; while (sta.Count != 0) { stackid=sta.Peek().ToString(); if (id != stackid) sta2.Push(sta.Pop()); else sta.Pop(); } while (sta2.Count != 0) { sta.Push(sta2.Pop()); } return sta; } static Stack mystack; static DataSet SelectedProducts; protected void Page_Load(object sender, EventArgs e) { if (Session["StorePermission"] != null && Session["username"] != null) { Panel1.Visible = true; Buttons_Panel.Visible = false; if (Request.QueryString["DeleteID"] != null) { string delid = Request.QueryString["DeleteID"].ToString(); mystack = DeleteIDFromStack(delid, mystack); SelectedProducts = GetSelectedProducts(mystack); if (SelectedProducts != null) { BindRepeater(SelectedProducts); SumTotalPrice(); } } else { if (Page.IsPostBack == false) { mystack = MakeCollection();
SelectedProducts = GetSelectedProducts(mystack); if (SelectedProducts != null) { BindRepeater(SelectedProducts); SumTotalPrice(); } else Response.Write("סלך ריק"); } } } else { Panel1.Visible = false; Response.Write("אינך לקוח בחנות"); } } private void SumTotalPrice() { //3 double sum = 0; for (int i = 0; i < SelectedProducts.Tables[0].Rows.Count; i++) { sum += int.Parse(SelectedProducts.Tables[0].Rows[i][3].ToString()); } TotalPrice_LBL.Text = sum.ToString(); } protected void BuyButton_Click(object sender, EventArgs e) { Buttons_Panel.Visible = true; } protected void MakeOrderButton_Click(object sender, EventArgs e) { localhost.Service ms = new localhost.Service(); int customer_id = int.Parse(Session["StorePermission"].ToString()); int credit_type=int.Parse(card_type.SelectedItem.Value.ToString()); string date = System.DateTime.Now.Day + "/" + System.DateTime.Now.Month + "/" + System.DateTime.Now.Year;
ms.AddOrder(date, SelectedProducts, customer_id,credit_type , expires_date.Text); OrderMessage.Text = "הזמנתך התבצעה בהצלחה"; } }
|
בפעולה BuyButton_Click אני רוצה בעצם להשים בSelectedProducts.Tables[0].Rows[i][2] את הכמות המתאימה לו.

