我有一个像这样的aspx页面:
<%@ Page Language="C#" CodeBehind="xxxx.aspx.cs" Inherits="xxxx" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title>How to use DropDownList OnSelectedIndexChanged event</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<h2 style="color:Red">DropDownList: OnSelectedIndexChanged</h2>
<asp:Label
ID="Label1"
runat="server"
Font-Bold="true"
ForeColor="DodgerBlue"
Font-Size="Large"
>
</asp:Label>
<asp:DropDownList
ID="drop1"
runat="server"
AutoPostBack="true"
OnSelectedIndexChanged="GetLocationDetails"
BackColor="Crimson"
ForeColor="FloralWhite"
onclientselectedindexchanged="return false;"
>
</asp:DropDownList>
</div>
</form>
</body>
</html>
下拉列表“drop1”的值从数据库“xxxx.aspx.cs”页面填充。当我从下拉框中选择值时,从aspx.cs调用一个名为“GetLocationDetails”的函数。当我从下拉框中按下一个值时,页面将刷新,并且仅选择第一个值。请帮忙。
答案 0 :(得分:1)
在页面加载事件中绑定下拉列表:
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
{
//Bind here or call method that binds dropdownlist
}
}
AutoPostBack
设置为true
,这会导致整个页面被发回服务器。
如果您没有跟踪IsPostBack
page
您的下拉列表再次绑定。
答案 1 :(得分:0)
下拉菜单中的AutoPostBack="true"
会导致您的网页每次更改值时都会提交请求。并且由于您在每个页面加载时填充下拉列表,它将重置所有内容。
在您的代码中,在页面加载中,用以下内容填充您的填充代码:
if(!IsPostBack)
{
}
这将导致下拉列表仅在首页加载时填充,而不是在回发时填充。