Điểm mấu chốt của câu hỏi của bạn, tôi tin rằng, là:
"khi tôi chọn bất kỳ giá trị nào từ trình đơn thả xuống, tôi tải một số dữ liệu từ cơ sở dữ liệu phụ thuộc vào giá trị đã chọn này, tôi đang gặp phải sự cố khi trang thay đổi lựa chọn sẽ được làm mới".
Có nhiều cách để thực hiện việc này, nhưng có thể yêu cầu một số cơ cấu lại để tạo hiệu ứng mong muốn. Một cách tương đối đơn giản để làm điều này sẽ là:
(1) Tổ chức lại trang của bạn như sau:
<asp:DropDownList ID="ddList" CssClass="dropdown" Style="width: 200px !important;" runat="server" AutoPostBack="false">
</asp:DropDownList>
<asp:UpdatePanel ID="OuterUpdatePanel" runat="server">
<ContentTemplate>
<!-- Content goes here -->
</ContentTemplate>
</asp:UpdatePanel>
(2) Thêm kịch bản như sau:
<script type="text/javascript">
function handleDDLChange() {
__doPostBack($('div[id$="OuterUpdatePanel"]').attr('id'), 'ddlList_Changed_Or_Anything_Else_You_Might_Want_To_Key_Off_Of');
}
$('input[id$="ddlList"]').change(handleDDLChange);
</script>
Đây là một nhiều hơn " cách tiếp cận cũ của trường học cũ, nhưng nó sẽ giải quyết vấn đề của bạn.
EDIT: Sau đây minh họa một "phi jQuery" cách tiếp cận, với ý tưởng trên nhiều hơn một chút fleshed ra:
ascx:
<asp:ScriptManager runat="server" />
<asp:DropDownList ID="ddlList" runat="server" onchange="handleDDLChange()">
<asp:ListItem Text="text1" />
<asp:ListItem Text="text2" />
</asp:DropDownList>
<script type="text/javascript">
function handleDDLChange() {
__doPostBack("<%= ddlList.ClientID %>", "ddlList_Changed_Or_Anything_Else_You_Might_Want_To_Key_Off_Of");
}
</script>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Literal ID="litTest" runat="server" />
</ContentTemplate>
</asp:UpdatePanel>
Code-Behind:
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
litTest.Text = "No postback";
}
else if (Request["__EVENTARGUMENT"] == "ddlList_Changed_Or_Anything_Else_You_Might_Want_To_Key_Off_Of")
{
litTest.Text = string.Format("Dropdown changed: {0}", ddlList.Text);
}
else
{
litTest.Text = "Postback for some other reason... :(";
}
}
tôi đã kiểm tra này và cũng với
Bạn có thêm các trình kích hoạt bên dưới mẫu nội dung không? Và thứ hai không xóa AutoPostBack = "true" –
có bên dưới mẫu nội dung và tất cả các điều khiển khác nằm trong mẫu nội dung. –