Как я могу вызвать функцию сценария Java (в .cs) в OnClientClick кнопки ссылки? - PullRequest
0 голосов
/ 29 февраля 2012

Я пишу такой скрипт в моем .cs файле:

 StringBuilder script = new StringBuilder();
 script.Append("<script type=\"text/javascript\"> function submitform(){");
 script.Append(" document.forms['" + ((HtmlGenericControl)frm).Attributes["id"] + "'].submit();} </");
 script.Append("script>");

Как я могу вызвать эту функцию в OnClientClick моей кнопки ссылки?

LinkButton hl_process = new LinkButton();
hl_process.OnClientClick = ""

Edit1:

protected Control CreateCommForm()
{
    HtmlGenericControl frm = new HtmlGenericControl("form");
    frm.Attributes.Add("id", "sal");
    frm.Attributes.Add("method", "post");
    frm.Attributes.Add("action", "https://------");
    /////////////////////////////////////////
    HtmlGenericControl hdn_sal_a = new HtmlGenericControl("input");
    hdn_sal_a.Attributes.Add("id", "hdn_sal_a");
    hdn_sal_a.Attributes.Add("name", "hdn_sal_a");
    hdn_sal_a.Attributes.Add("type", "hidden");
    hdn_sal_a.Attributes.Add("value", Session["emp_num"].ToString());
    /////////////////////////////////////////
    HtmlGenericControl hdn_sal_b = new HtmlGenericControl("input");
    hdn_sal_b.Attributes.Add("id", "hdn_sal_b");
    hdn_sal_b.Attributes.Add("name", "hdn_sal_b");
    hdn_sal_b.Attributes.Add("type", "hidden");
    hdn_sal_b.Attributes.Add("value", Session["user_name"].ToString());

    frm.Controls.Add(hdn_sal_a);
    frm.Controls.Add(hdn_sal_b);

    column1.Controls.Add(frm);
    return frm;

}

Ответы [ 2 ]

2 голосов
/ 29 февраля 2012

разделяет проблемы Визуальная часть вашего приложения не должна быть затронута, если вы переместите свое приложение на java или ruby.это то, что separate of concerns.

пишет клиентский скрипт в клиенте, а не в файле cs :

$('#<%= hl_process.ClientID %>').click(function(){
     ...
     $('#formId').submit();
     // if the button inside the form:
     this.form.submit(); // HTML5
     // Or:
     $(this).closest('form').submit(); 
     // if the button not inside the form :
     var class = $(this).attr('class');
     $('form.' + class).submit();
});
1 голос
/ 29 февраля 2012

Используйте jquery для привязки к событию click вместо того, чтобы делать это на стороне сервера:

<a href="#" class="blah">Submit Me</a>

тогда в javascript что-то вроде:

<script type="text/javascript">
$('.blah').click(function() {
   document.forms[0].submit();
});
</script>

Edit:

Хотя вы можете генерировать элементы пользовательского интерфейса с помощью codebehind, это не совсем так, как в asp.net. Используйте повторители, если вам нужно повторить генерацию элементов управления На самом деле, создание нескольких форм также не является способом asp.net, так как предполагает, что только одна форма выполняется в контексте сервера, а все остальное связывается с событием при отправке. В любом случае, кажется, что вы все еще изучаете asp.net и, вероятно, пришли из PHP или чего-то подобного.

Чтобы удовлетворить ваш запрос, я бы посоветовал не создавать JS на стороне сервера. Присвойте своим классам разные имена классов и используйте тот же метод, что и выше. Вам не нужно LinkButton для отправки формы, простой якорь <a> отвечает всем требованиям.

Вы можете использовать свойство ClientID (если вы не используете классы), но вы должны сначала прикрепить родительский элемент управления к странице, чтобы алгоритм включился.

Итак, ваш код будет выглядеть примерно так:

protected Control CreateCommForm()
{
   ...
   column1.Controls.Add(frm);   

   HtmlGenericControl a = new HtmlGenericControl("a");
   a.Attributes["onclick"] = "$('#" + frm.ClientID + "').submit();";
   a.InnerText = "Submit me";
   frm.Controls.Add(a);
   return frm;
}

Альтернативный способ (лучшее разделение интересов)

protected Control CreateCommForm()
{
   ...
   column1.Controls.Add(frm);   

   HtmlGenericControl a = new HtmlGenericControl("a");
   a.Attributes["class"] = "submitter";
   a.InnerText = "Submit me";
   frm.Controls.Add(a);
   return frm;
}

И в javascript мы находим родительскую форму и отправляем ее (это может быть в статическом js-файле):

<script type="text/javascript">
$('.submitter').click(function( 
  $(this).parents('form').submit();
));
</script>
...