2012-06-13 2 views
1

У меня есть два файла для этого года и следующего года, а linkbutton должен указывать на другой файл, зависит от года. Но проблема в том, что мы хотим открыть файл в новом окне. Поэтому я решил позвонить JavaScript на стороне сервераlinkbutton с несколькими вариантами ссылок

код для жереха: LinkButton

<asp:LinkButton ID="guide" runat="server" Text="XXX" OnClick="guide_click"> 

Javascript код

function Guidelink2013() { 
     window.open('XXX1.pdf', '', 'width=750,height=900'); return false; 
} 
function Guidelink2012() { 
     window.open('XXX2.pdf', '', 'width=750,height=900'); return false; 
} 

код за

protected void guide_click(object sender, EventArgs e) 
    { 
     if (Session["YearLastLicence"] != null) 
     { 
      if (int.Parse(Session["YearLastLicence"].ToString()) < DateTime.Now.Year) 
      { 
       ClientScript.RegisterStartupScript(GetType(), "Javascript", "javascript:Guidelink2012();", true); 
      } 
      else ClientScript.RegisterStartupScript(GetType(), "Javascript", "javascript:Guidelink2013();", true); 

     } 
    } 

Он отлично работает, когда первое открытие страницы, но если я обновляю страницу, всплывающее окно откроется автоматически. Есть идеи? спасибо

+1

Почему бы не отправить имя pdf в качестве параметра функции javascript вместо написания двух функций, которые почти идентичны, кроме имени pdf? Это сэкономит вам 4 или 5 строк кода. – Bastardo

ответ

0

Вы должны написать код на странице загрузки, а не в событии клика кнопки ссылки.

Так на странице загрузки,

if (Session["YearLastLicence"] != null) 
     { 
      if (int.Parse(Session["YearLastLicence"].ToString()) < DateTime.Now.Year) 
      { 
       guide.Attrbuites.Add("onclick","javascript:Guidelink2012();return false;"); 
      } 
      else { 
guide.Attrbuites.Add("onclick" "javascript:Guidelink2013();return false;"); 

     } 
} 

Вы также можете удалить событие щелчка от LinkButton.

+0

должно быть «Атрибуты». Он работает, можете ли вы объяснить немного больше, почему это не сработало правильно в событии onclick? – pita

+0

в событии onclick вы делали ClientScript.RegisterStartupScript, который регистрирует событие, которое будет выполняться во время загрузки страницы на клиенте. поэтому, как только вы нажмете на кнопку ссылки, она будет возвращена обратно, и запуск сценария, но позже post backs не будет иметь эту информацию и не откроет popoup. Надеюсь, это имеет смысл. –

+0

Также сделайте ответ как ответ, чтобы другие люди могли найти его полезным! :) –

Смежные вопросы