Jquery - передать аргумент команды кнопки asp с помощью jquery.
У меня есть кнопка asp:
<asp:button ID="btn1" runat="server" CommandArgument="" CssClass="btn1" OnClick="button_click"></asp:button>
и скрипт:
$("a").click(function () {
var val = $(this).attr('id').toString();
$('.btn1').attr('CommandArgument',val);
alert($('.btn1').attr('CommandArgument').toString());
$('.btn1').click();
});
после щелчка он сообщает мне аргумент команды. Но на следующем шаге - когда я запускаю btn1 click с помощью jquery, он переходит к codebehind, а аргумент команды пуст. Могу ли я передать аргумент команды с помощью jquery?
Я пытался сохранить значение в глобальных переменных, но после обратной передачи все они пусты. И я не хочу использовать куки или viewstate для этого.
Спасибо!
5 ответов
CommandArgument
является полностью серверным свойством и не отображает html-атрибут. Таким образом, вы не можете изменить атрибут любой кнопки и нажать на нее. Хорошей новостью является то, что вы можете запустить обратную передачу с помощью функции __doPostBack на стороне клиента и передать свое пользовательское значение в качестве второго параметра:
<script type="text/javascript">
$("a").click(function () {
var val = $(this).attr('id').toString();
__doPostBack("<%= btn1.UniqueID %>", val);
});
</script>
И вы можете получить переданный аргумент в обработчике кликов на сервере из коллекции Request.Form:
protected void button_click(object sender, EventArgs e)
{
var argument = Request.Form["__EVENTARGUMENT"];
}
Если приведенный выше скрипт не будет работать, то, возможно, функция __doPostBack не определена на странице. В этом случае добавьте этот код в метод Page_PreRender: ClientScript.GetPostBackEventReference(btn1, string.Empty);
это заставит страницу определить __doPostBack
метод на странице.
Я обнаружил, что использование __doPostBack('id','args') создает обратную передачу всей страницы при нажатии кнопки отправки. Я считаю, что проще добавить скрытое поле на странице, установить значение, а затем вызвать событие button.click()
<asp:Button ID="btnTrigger" runat="server" ClientIDMode="Static" OnClick="btnTrigger_Click" />
<asp:HiddenField ID="CommandArg" runat="server" ClientIDMode="Static" />
$('#CommandArg').val('my argument');
$('#btnTrigger').click();
Или вы можете попробовать это:
<script type="text/javascript">
function MaybeThisWorks(obj)
{
__doPostBack( obj.id, 'OtherInformation' );
return true;
}
</script>
...
<asp:Button Text="ButtonValue" ID="RepP1" runat="server" OnClientClick="MaybeThisWorks(this);" OnClick="CodeBehindFunction" />
"Другая информация" может быть заменена любой строкой или переменной.
например
$('# Календарь'). FullCalendar('GetDate'). GetMonth()+' '+$('# календарь '). FullCalendar(' GetDate'). GetFullYear ()
CodeBehindFunction - это функция кода, которая выполняется на сервере при нажатии кнопки (например, кнопка, которая печатает отчет и нуждается в значениях jquery в функции codebehind).
В функции codebehind вы можете получить аргументы с помощью Request.Form["__EVENTARGUMENT"]
protected void CodeBehindFunction(object sender, EventArgs e)
{
string arguments = Request.Form["__EVENTARGUMENT"];
...
}
Попробуй это. Это сработало для меня.
// JQuery на стороне клиента:
$('#btnTrigger').val('MyParameter');
$('#btnTrigger').click();
// Метод щелчка на стороне сервера
String Param = Request.Form(btnTrigger.UniqueID)
Я обычно просто добавляю атрибут к кнопке в коде, а затем обращаюсь к нему через DOM в Javascript или jQuery.
mybutton.Attributes.Add("MyVar", "MyValue");
Это будет отображаться на странице, и вы можете получить доступ к значению, используя Javascript.