PDA

View Full Version : Help me - Shopping cart



chang_ngao2001
06-07-2009, 14:58
Em muốn làm một trag thông tin giỏ hàng bằng C#.NET như thế này

http://files.myopera.com/ngoc_bich/files/GioHang.jpg

Khi chỉnh số lượng ở 1 hoặc nhiều dòng, sau đó click "Update" thì số lượng sẽ được cập nhật ở những dòng đó.
Mấy huynh nào có biết hoặc có ý tưởng giải quyết thì giúp Em với, chân thành cảm ơn

chang_ngao2001
24-07-2009, 12:04
Việc này đơn giản lém. Bạn có thể liên lạc qua nick của mình.
nick YH : trinhoaithanh1905

Đơn giản..., Em pm qua YH mà không thấy hồi âm.
Ai có thể giúp em không?

trinhdiep
24-07-2009, 19:14
trong cái update đó lặp qua các hàng và update cho từng hàng chứ có gì đâu nhỉ.

chang_ngao2001
05-08-2009, 23:37
hic, em không biết làm sao, anh có thể cho em xem code được không? duyệt từng hàng trong giỏ hàng thì được, nhưng không biết số lượng mới của hàng nào, dùng javascript hay là gì anh ? Mong mọi người giúp đở

chieunt
06-08-2009, 16:32
hic, em không biết làm sao, anh có thể cho em xem code được không? duyệt từng hàng trong giỏ hàng thì được, nhưng không biết số lượng mới của hàng nào, dùng javascript hay là gì anh ? Mong mọi người giúp đở

bạn dùng Control nào để show sản phẩm trên giỏ hàng đó? Repeater, Datalist ....?

chang_ngao2001
10-08-2009, 10:56
Mình dùng datalist control. pls help me

hieudtr
13-08-2009, 00:26
Bạn chỉ cần duyệt DataList để cập nhật giá trị của từng hàng thôi

dq_ninh
13-08-2009, 04:07
Em muốn làm một trag thông tin giỏ hàng bằng C#.NET như thế này

http://files.myopera.com/ngoc_bich/files/GioHang.jpg

Khi chỉnh số lượng ở 1 hoặc nhiều dòng, sau đó click "Update" thì số lượng sẽ được cập nhật ở những dòng đó.
Mấy huynh nào có biết hoặc có ý tưởng giải quyết thì giúp Em với, chân thành cảm ơn

Có hai cách:

Cách dễ nhất mà nhiều tay "amateur" thường dùng là, khi tạo dựng lên một VS-200x project, họ tạo lên một datasource, và kết hợp (binding) datasource đó với datalist. Khi update, thì chỉ cần gọi hàm update() của datasouce là được. Nếu lục lọi sau "hậu trường" của project sau khi datasource và binding đã được tạo lên, thì bạn sẽ thấy một rừng source code của MS (căn bản trên template) và những hàm mà họ dùng để update dữ liệu đã kết hợp với datasource. Nếu bạn muốn có code mẫu, thì cứ vào VS-200x, mở cái project của bạn ra, tạo datasource và bindings thì sẽ thấy ngay. Điều cần biết để tự học là phải để ý xem, trước khi datasource được tạo lên, project của bạn có những files nào. Sau khi datasource đã được tạo xong, những filé nào đã được thay đổi, và trong project có thêm những files mới nào. Sau đó, điều nghiên những source code trong những files đã thay đổi, cũng như code của những files mới. Nếu cần, chạy Debug và xử lý từng hàng một để có thể hiểu rõ ràng từng giòng một. Đây là một công việc tỉ mỉ đòi hỏi tính nhẫn nại. Và nhẫn nại là một đặc tính mà lập trình gia nào cũng cần phải có. Bạn có biết, khi .NET 1.0 vưà được tung ra, đã có bao nhiêu người ngồi thâu đêm, tạo lên những project có kết hợp CSDL, và sau đó, thức trắng bên ly cà phê đen đậm để nghiền ngẫm từng hàng code mà VS đã tạo ra căn bản trên template không?

Cách thứ hai là đừng bao giờ tự binding trong code của bạn. Cách này thì các tay chuyên nghiệp thường làm (sau khi đã bỏ ra hàng chục đêm nghiền ngẫm những hàng code tạo lên bởi template), vì họ không muốn dùng template để tạo lên một núi source code mà hơn 50% là không cần dùng tới. Khi muốn update, thì phải tự viết code, kiểm ra từng hàng một trong datalist coi hàng nào đã được thay đổi. Hàng nào được thay đổi thì lấy ra, bỏ vào một node của XmlDocument chẳng hạn. Khi lấy hết được những hàng đã thay đổi ra rồi, thì gọi stored procedure, đưa xml document cho nó, để nó update. Dĩ nhiên là cái stored procedure đó, bạn cũng phải tự viết lấy.

Còn chưa chịu viết một hàng code nào hết, T-SQL cũng không viết, C# code cũng không viết, mà bảo anh em đưa code cho coi, thì không lẽ anh em đổ lên đây vài chục trang code cho bạn sao?

Tuy nhiên, tôi cũng đưa lên đây một thí dụ ngắn, mà tôi đã dùng với datagridview để update, như sau:



public XMLDoc xmlCreateDocument(XMLDoc xmlDoc, string TableName, XMLDocOption Option)
{
string ColName;

xmlDoc.WriteStartElement("Table");
xmlDoc.WriteAttributeString("Name", TableName);
for (int rowidx = 0; rowidx < this.GridView1.Rows.Count; rowidx++)
{
if (!this.GridView1.Rows[rowidx].IsNewRow || this.GridView1.Rows[rowidx].Tag == this.tagDirty)
{
xmlDoc.WriteStartElement("Record");
xmlDoc.WriteAttributeString("row_index", rowidx.ToString());

for (int idx = 0; idx < this.GridView1.Columns.Count; idx++)
{
object colVal = this.GridView1.Rows[rowidx].Cells[idx].Value;
ColName = this.GridView1.Columns[idx].Name;
if(false == AppUtility.IsEmptyValue(colVal))
{
if (this.GridView1.Columns[idx] is DataGridViewCheckBoxColumn)
{
colVal = "F";
}
}
xmlDoc.WriteAttributeString(ColName, Convert.ToString(colVal));
}

xmlDoc.WriteEndElement();
}
}

xmlDoc.WriteEndElement();
if (Option == XMLDocOption.CloseDoc)
{
xmlDoc.CloseDocument();
}
return xmlDoc;

}

Hàm trên đây bỏ tất cả những hàng đã được NXD thay đổi (dirty), hoặc những hàng mới (new row) trong một GridView vào một XmlDocument. Sau đó, hàm gọi sẽ gọi một stored procedure để update tất cả các records trong XmlDocument.

Và đó chỉ là một hàm thôi. Muốn update còn phải có nhiều hàm nữa, và phối hợp với một stored procedure trong CSDL. Còn phải kết nối với CSDL, còn đã một đống chuyện phải làm.

Nếu bạn chưa làm gì hết mà nhờ anh em chỉ thì anh em chịu thua. Anh em nào tốt bụng vào đây trả lời cho bạn cũng chỉ có thể trả lời phiên phiến kiểu từ chương. Nói tóm tắt lại, bạn phải tự học, tự làm, tự viết code. Khi nào viết xong mà chạy bị lỗi thì vào đây đưa source code của bạn lên và cái lỗi bạn đã gặp. Như thế, bạn sẽ nhận được những giúp đỡ thiết thực hơn.

chieunt
14-08-2009, 12:26
Mình dùng datalist control. pls help me

add nick tôi vào tôi chỉ cho.
chieu_aptech.

chang_ngao2001
19-08-2009, 08:30
Có hai cách:
...
Nếu bạn chưa làm gì hết mà nhờ anh em chỉ thì anh em chịu thua. Anh em nào tốt bụng vào đây trả lời cho bạn cũng chỉ có thể trả lời phiên phiến kiểu từ chương. Nói tóm tắt lại, bạn phải tự học, tự làm, tự viết code. Khi nào viết xong mà chạy bị lỗi thì vào đây đưa source code của bạn lên và cái lỗi bạn đã gặp. Như thế, bạn sẽ nhận được những giúp đỡ thiết thực hơn.

Em đã làm một trang giỏ hàng rồi, nhưng đơn giản là ở mổi hàng lại có một Button để cập nhật số lượng. Nó nhìn không được đẹp, nên giờ muốn chỉ cần một Button cho cả trang, nhưng không biết ý tưởng và cách làm như thế nào, chứ có phải em không chịu làm mà ngồi không xin code đâu :((. Em sẽ tiếp tục tìm hiểu, và mong anh tận tình giúp đở.

chang_ngao2001
23-08-2009, 14:19
Ô làm được rồi, thanks anh chieunt nhiều.
Một cách đơn giản nhưng nhiệt tình.
Cũng cảm ơn tất cả mọi người.