我有一个从sql表填充的下拉列表...我有30秒后刷新的页面,问题是在30秒之后页面刷新回默认页面而不是停留在所选页面上。如何更改此选项以保留所选页面?我也把一个默认的页码放到我的页面加载中,我怎么能改变这个,所以我不必把默认选择... ...希望这是有道理的。
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Refreshdata(214, DateTime.Today, DateTime.Today.AddDays(1).AddMinutes(-1));
BindDropDownList();
}
}
214 is one of the stored procedure selections, but i would like this to be a default selection ..
public void Refreshdata(int selectedProduct, DateTime shiftStart, DateTime shiftEnd)
{
BizManager biz = new BizManager();
GridView1.DataSource = biz.GetPacktstatisticsForShift(
shiftStart
, shiftEnd
, selectedProduct).DefaultView;
GridView1.DataBind();
}
public void Dropdownlist1_SelectedIndexChanged(object sender, EventArgs e)
{
DateTime shiftStart = DateTime.Today;
DateTime shiftEnd = DateTime.Today.AddDays(1).AddMinutes(-1);
int productId;
if (int.TryParse(Dropdownlist1.SelectedValue, out productId))
Refreshdata(productId, shiftStart, shiftEnd);
}
答案 0 :(得分:1)
您不必刷新整个页面。您可以使用updatepanel更新页面的部分内容。在你的情况下只有gridview。
<asp:DropDownList ID="DropDownList1" runat="server"></asp:DropDownList>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:GridView ID="GridView1" runat="server">
</asp:GridView>
</ContentTemplate>
</asp:UpdatePanel>
您使用javascript计时器在updatepanel上调用update。计时器每30秒触发一次。
<script type="text/javascript">
setInterval(function () { RefreshItems();}, 30000);
function RefreshItems()
{
var UpdatePanel1 = '<%=UpdatePanel1.ClientID%>';
if (UpdatePanel1 != null)
{
__doPostBack(UpdatePanel1, '');
}
}
</script>
最后在页面加载中添加了一个
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Refreshdata(214, DateTime.Today, DateTime.Today.AddDays(1).AddMinutes(-1));
BindDropDownList();
}else
{
if(int.TryParse(DropDownList1.SelectedValue, out int selectedProduct))
{
Refreshdata(selectedProduct, DateTime.Today, DateTime.Today.AddDays(1).AddMinutes(-1));
}
}
}
这样您就可以刷新gridview而无需重新加载页面并在下拉列表中丢失初始选择。