09/10/2018, 23:16
Giúp đỡ: Cập nhật thông tin động trên 1 trang web
Chào mọi người, rất mong được giúp đỡ,
Hiện tại mình đang phát triển tiếp 1 website đã có sẵn, sử dụng ngôn ngữ ASP.NET, VB.NET, mình đang gặp khó khăn sau:
Mình muốn thiết kế 1 trang nhập liệu sản phẩm, trong đó có phần chọn ngành hàng. Do đặc trưng ngành hàng rất phức tạp, mình thiết kế 1 nút cho User bấm để load 1 popup chọn ngành hàng. Vậy vấn đề là làm sao khi User đó submit ngành hàng trong popup, trên trang nhập liệu sẽ cập nhật và hiển thị ngành hàng đã được chọn.
Mình nghĩ yêu cầu này sẽ gặp ở rất nhiều chức năng khác, mong mọi người thảo luận và giúp đỡ.
Cảm ơn,
Quốc Đạt
Hiện tại mình đang phát triển tiếp 1 website đã có sẵn, sử dụng ngôn ngữ ASP.NET, VB.NET, mình đang gặp khó khăn sau:
Mình muốn thiết kế 1 trang nhập liệu sản phẩm, trong đó có phần chọn ngành hàng. Do đặc trưng ngành hàng rất phức tạp, mình thiết kế 1 nút cho User bấm để load 1 popup chọn ngành hàng. Vậy vấn đề là làm sao khi User đó submit ngành hàng trong popup, trên trang nhập liệu sẽ cập nhật và hiển thị ngành hàng đã được chọn.
Mình nghĩ yêu cầu này sẽ gặp ở rất nhiều chức năng khác, mong mọi người thảo luận và giúp đỡ.
Cảm ơn,
Quốc Đạt
Bài liên quan
- Nếu dùng ID để ràng buộc ngành được chọn thì phải lưu biến ID này vào cookie hoặc session
- Nếu dùng tên để lưu ---> User gõ linh tinh và bạn lại phải kiểm tra.
Mà thực tế, làm như bạn công việc lập trình sẽ nhiều lên.
Theo mình nên sử dụng dạng Drop List để lựa chọn theo từng bước. Chọn thư mục mẹ ---> Thư mục cấp 2 ---> vv..v.v
Mình có làm một cái kiểu thế này ở www.hathanh.info (bạn xem phần search bên cột phải hoặc trái).
Có 2 vấn đề mình nói có lẽ chưa rõ, nên bạn chưa nắm bắt được hết:
1. Tại sao mình phải tạo 1 popup: như đã nói ở trên, hệ thống ngành hàng ở đây rất phức tạp. Ngành hàng cấp 1, dưới cấp 1 là cấp 2, cấp 3... Do đó nếu bỏ vào dropdownlist thì rất rối và khó cho người dùng (hiện nay khoảng hơn 100 đơn vị ngành hàng và sẽ mở rộng về sau). Mặt khác, mình không thiết kế popup như bạn hình dung là chọn 1 ngành hàng từ list hoặc gõ vào tên ngành hàng, mà hệ thống sẽ cung cấp các thống kê theo từ khóa, số lần search của người dùng qua thời gian, để hỗ trợ cho việc chọn ngành hàng chính xác nhất. Do vậy, bắt buộc mình phải thiết kế chức năng chọn ngành hàng ra 1 trang riêng.
2. Vì là popup, nên cả 2 trang (trang popup và trang nhập liệu) đều tồn tại cùng một lúc, chức không phải từ trang nhập liệu load qua popup, sau đó back về. Như vậy vấn đề là, làm sao tại trang nhập liệu, bắt được sự kiện người dùng submit ngành hàng trên trang popup, để có thể hiển thị tên ngành hàng trên trang nhập liệu.
Mình có nghĩ đến Ajax hoặc sử dụng frame, nhưng cảm thấy không tối ưu. Nếu tìm được cách giải quyết, ta có thể ứng dụng cho các chức năng như History, Favorite rất hay. Chúng ta tiếp tục thảo luận hen.
Khi bạn bật cửa sổ popup, bạn đã dùng function window.open OK?
để set giá trị cho cửa sổ nhập liệu mà dữ liệu lấy từ trang popup thì sẽ như sau:
Trong trang Popup
var giatrichon = "";
giatrichon = chongiatri();
window.opener.form['frmName'].txt_giatri.value = giatrichon;//window.opener: tham chiếu đến cửa sổ nhaplieu.aspx và set thuộc tính value cho textbox txt_giatri
window.close();// thuc hien dong cua so khi da chon xong
Mình đã thử theo cách của bạn, nhưng hình như vẫn không truy xuất được vào đối tượng Opener, bạn có thể giúp mình viết 1 file HTML đơn giản để minh họa được ko? - Thanks.
<!---------------- nhaplieu.htm ------------------------->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>New Page 1</title>
</head>
<body>
<form name="frmName">
<input type=text name="txt_giatri"><input type=button value="..." onclick="openWindow()">
</form>
<script language=javascript>
function openWindow(){
window.open("popup.htm","_w","height=300,width=150 ");
}
</script>
</body>
</html>
<!-------------------------------- popup.htm -------------->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>New Page 1</title>
</head>
<body>
<table cellpadding=0 cellspacing=0 border=1 width=100%>
<tr>
<th>ID</th><th>Name</th>
</tr>
<tr id="001" onclick="chon(this)">
<td>001</td><td>Music</td>
</tr>
<tr id="002" onclick="chon(this)">
<td>002</td><td>Movie</td>
</tr>
<tr id="003" onclick="chon(this)">
<td>003</td><td>Sport</td>
</tr>
<tr id="004" onclick="chon(this)">
<td>004</td><td>News</td>
</tr>
</table>
<script language=javascript>
function chon(obj){
var giatrichon = "";
giatrichon = obj.id;
window.opener.document.forms['frmName'].txt_giatri.value = giatrichon;
window.close();
}
</script>
</body>
</html>
@TuanAnh: thanks nhiều hen, bạn có ở hcm ko, bữa nào đi măm cafe chơi. Có gì pm cho mình.