2011-06-29 53 views
5

tôi có một trang mà khi nhấp vào nút, chức năng javascript sẽ chạy. Sau đó nó tổng hợp một số dữ liệu và đặt dữ liệu trên một trường ẩn trong trang này. Sau đó, nó sẽ mở ra một cửa sổ mới. Cửa sổ mới này sẽ lấy dữ liệu tổng hợp này như sau: -sử dụng giá trị javascript và doPostback?

$('#accepted').val(window.opener.$('#accepted').val()); 

nơi chấp nhận là trường ẩn trong cả cửa sổ cha và con (không sử dụng runat = "máy chủ"). Vấn đề bây giờ là tôi yêu cầu dữ liệu này để databind hai lưới. Hiện tại tôi đã thực hiện một doPostback trên cả hai lưới, nhưng những gì tôi thực sự muốn làm là doPostback cho biểu mẫu một lần và xử lý dữ liệu sự kiện PageLoad. Vì vậy, hai câu hỏi: -

1) Làm cách nào để tôi thực hiệnPostback biểu mẫu?

2) Làm cách nào để tôi thực hiện việc này trong khi vẫn có thể phân biệt với việc gửi biểu mẫu thực tế?

Trả lời

1

Để đăng biểu mẫu, bạn chỉ có thể thêm cuộc gọi vào __doPostback trong javascript của mình, sau khi trường được chấp nhận được đặt. Bạn có thể sử dụng tham số EventTarget và EventArgument của __doPostback để kiểm soát ràng buộc trong lưới của bạn.

Vì vậy, bạn có thể đặt điều này trong js của bạn:

__doPostback('rebindGrid', ''); 

và sau đó này trong trường hợp tải trang của bạn:

if (Request.Form["__EVENTTARGET"] == "rebindGrid") 
{ 
    //....Do so stuff 
} 
0

Để buộc nó ở cách trực tiếp hơn với mô hình postback tôi bọc mỏ với một số C#

C# Phương pháp mở rộng

public static string GetPostBackLink (this Control c, string argument = "") { 
return c.Page.ClientScript.GetPostBackEventReference(ctl, argument, true) + ";"; 
} 

ASPX

<asp:LinkButton id="lnkDoThis" runat="server" onclick="lnkDoThis_Click" 
     style="display: none;"></asp:LinkButton> 

<asp:HiddenField id="hdnParamHolder" runat="server" /> 

JS

function DoSomething(param) { 
$("[id$='hdnDealTemp']").val(param); 
<%= lnkDoThis.GetPostBackLink() %> 
} 

CodeBehind

protected void lnkDoThis_Click (object sender, EventArgs e) { 
var myParam = hdnParamHolder.Value; 
// Do server actions here 
} 

Đối với việc mở trong một cửa sổ thứ hai ... Tôi không chắc chắn tôi làm theo khi bạn muốn điều này xảy ra ? Nếu đó là sau khi postback, bạn sẽ cần phải đọc từ điều khiển hdnParamHolder khi trang tải lại.

Các vấn đề liên quan