我有一个母版页和一个Default.aspx页面。我的下拉列表<select>
位于母版页上。
我想从母版页的下拉列表中选择一个月,并将其分配给不同类中的变量。然后,default.aspx页面必须使用该变量从数据库中选择数据,其中日期等于我分配给变量的日期。
在母版页上选择的原因,是因为选择器应该在 ALL 页面上通过网站。
导致此问题的主要原因是defauls.aspx页面上的Page_Load event
会在主页面中激活之前的Page_Load。
如果我尝试Page_Init
,它会起作用,但选择器代码会继续返回0作为值。我也尝试使用HiddenField
,但也失败了。我很感激你的帮助!
Site1.Master:
<select id="SelectMonth" runat="server" onchange="CmbChange();">
<option id="Select" value="0">[Select Month]</option>
<option id="January" value="1">January</option>
<option id="February" value="2">February</option>
<option id="March" value="3">March</option>
<option id="April" value="4">April</option>
<option id="May" value="5">May</option>
<option id="June" value="6">June</option>
<option id="July" value="7">July</option>
<option id="August" value="8">August</option>
<option id="September" value="9">September</option>
<option id="October" value="10">October</option>
<option id="November" value="11">November</option>
<option id="December" value="12">December</option>
</select>
<script type="text/javascript">
function CmbChange(obj) {
var cmbValue = document.getElementById("SelectMonth").value;
__doPostBack('SelectMonth', cmbValue);
}
</script>
Site1.Master.cs:
protected void Page_Load(object sender, EventArgs e)
{
int month = Convert.ToInt32(SelectMonth.Value);
if (month > 0)
{
Date.Month = month;
}
else
{
Date.Month = DateTime.Now.Month;
}
}
Default.aspx的:
protected void Page_Load(object sender, EventArgs e)
{
// Example
var sql = "SELECT * FROM Data WHERE Month = " + Date.Month;
}
Date.cs:
public static class Date
{
public static int Month { get; set; }
}
谢谢!
答案 0 :(得分:1)
为什么不尝试使用Default.aspx.vb Page_PreRender
,然后使用MasterPage上的Page_Load
来获取值呢?
或者使用include:
<%@ MasterType VirtualPath="~/MasterPages/Site.Master" %>
并调用在MasterPage中写入的函数以使用以下方法获取DropDown值:
Master.FunctionNamedOnMasterPage()
Here是MSDN网站上有关如何引用MasterPage内容的链接
答案 1 :(得分:0)
您需要使用控件的Load
并在那里设置变量,因为控件是在页面之前加载的。