2011-10-17 26 views
6

Tôi có một hộp kiểm được đặt thành "false" làm mặc định trong aspx. Sau đó, có một chức năng xác định xem nó là đúng hay sai, vấn đề là khi trên trang có một hộp văn bản và hộp văn bản này có một sự kiện TextChange vào nó, khi tôi gõ một cái gì đó trong hộp văn bản và sau đó đi đến hộp kiểm tại thời điểm này có thể nhìn thấy lần đầu tiên tôi bấm vào toàn bộ postbacks trang và đặt lại hộp kiểm để bỏ chọn .. sau đó tôi cần phải bấm vào nó một lần nữa và sau đó nó gậy .. những gì tôi có thể làm để làm cho nó dính tại nhấp chuột đầu tiên?Duy trì nếu hộp kiểm được nhấp qua postback

Tôi có thể sử dụng một số javascript cho điều này hoặc bạn nghĩ tùy chọn của mình là gì?

protected void myTextbox_TextChanged(object sender, EventArgs e) 
    { 
     ShowCheckBox(true); 
    } 

    private void ShowCheckBox(bool ckVal) 
    { 
     myCheckBox.Visible = ckVal; 
    } 
+2

Nếu bạn đang thiết lập các hộp kiểm để kiểm tra trong code-behind của bạn, điều này sẽ vẫn kiểm tra sau khi postback , trừ khi có vấn đề với ViewState vv? – Curt

+0

Bạn có thể đặt giá trị được kiểm tra 'mặc định' thành false trong mã-đằng sau không? –

+0

Có, tôi làm, trong một trường hợp khác và nếu không, nhưng tôi có điểm dừng ở đó và nó không bao giờ đi qua dòng đó – user710502

Trả lời

6

tại sao không thêm hộp văn bản bên trong một cái gì đó cập nhật bảng như thế này:

<asp:UpdatePanel runat="server" ID="test"> 
    <ContentTemplate> 
     <asp:TextBox ID="TEXTBOX" runat="server" Visible="true" AutoPostBack="true" 
      OnTextChanged="checkUser" >Page Name</asp:TextBox> 
    </ContentTemplate> 
    <Triggers> 
     <asp:AsyncPostBackTrigger ControlID="TEXTBOX" EventName="TextChanged" /> 
    </Triggers> 
</asp:UpdatePanel> 
+0

Yeap tất cả những gì tôi cần là một bảng cập nhật cảm ơn – user710502

0

Bạn không đăng toàn bộ mã nên tôi sẽ đoán. Hãy thử đặt thuộc tính AutoPostBack cho hộp văn bản thành sai và xem có khắc phục được không.

Nếu điều đó không làm điều đó, vui lòng đăng mã của bạn hoặc mã mẫu đầy đủ để tái tạo sự cố.

4

Nếu tôi là bạn, tôi sẽ viết một số clode ở phía máy khách để hiển thị hộp kiểm hoặc ẩn nó, viết mã suck ở phía máy chủ là không tốt và cần thêm vòng tròn bạn cũng có thể sử dụng updatepanel để làm điều đó

5

Dự đoán tốt nhất của tôi là khởi tạo hộp kiểm của bạn (những gì được đặt thành Đã kiểm tra thành sai) chạy trên mọi bài đăng. Ví dụ. thay đổi này

protected void Page_Load(object sender, EventArgs e) 
{ 
    myCheckBox.Checked = false; 
} 

này

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
     myCheckBox.Checked = false; 
} 

Tuy nhiên, chúng tôi sẽ cần phải nhìn thấy một số mã khác trước khi chúng tôi có hiệu quả có thể giúp bạn. Một phần của vấn đề có thể là ViewState không tồn tại khi điều khiển không hiển thị. Nếu tất cả những gì bạn muốn làm là hiển thị/ẩn nó, sử dụng javascript như những người khác đã gợi ý.

Dưới đây là một ví dụ với jQuery:

$(document).ready(function(){ 
    $("#myTextBox").change(function() { 
    $("#myCheckBox").show(); 
    }); 
}); 
3

Checkbox, nếu .Visible = false không trả lại cho khách hàng. Vì vậy, khi postback xảy ra, giá trị mặc định của "false" là giá trị được đặt thành.

Bạn có thể kiểm soát tất cả thời gian và chuyển đổi chế độ hiển thị qua CSS để hộp kiểm luôn là một phần của cây điều khiển và ViewState của nó được duy trì.

style="display:none"style="display:inline"

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