我有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点击jquery时,它转到codebehind并且命令参数为空。我可以用jquery以某种方式传递命令参数吗?
我试图将值保存到全局变量但是在回发之后它们都是空的。我不想为此使用cookies或viewstate。
谢谢!
答案 0 :(得分:9)
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
方法。
答案 1 :(得分:3)
我发现使用__doPostBack(&#39; id&#39;,&#39; args&#39;)在提交按钮时会创建一个完整的页面回发。我发现更容易添加一个隐藏的页面,设置值,然后调用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();
答案 2 :(得分:1)
或者你可以尝试这个:
<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" />
'OtherInformation'可以被任何字符串或变量替换
例如
$('#calendar')。fullCalendar('getDate')。getMonth()+','+ $('#calendar')。fullCalendar('getDate')。getFullYear()
CodeBehindFunction是单击按钮时在服务器上执行的代码隐藏功能(例如,在代码隐藏功能中打印报告并需要jquery值的按钮)。
在codebehind函数中,您可以通过Request.Form获取参数[“__ EVENTARGUMENT”]
protected void CodeBehindFunction(object sender, EventArgs e)
{
string arguments = Request.Form["__EVENTARGUMENT"];
...
}
答案 3 :(得分:1)
我通常只是在后面的代码中为按钮添加一个属性,然后通过Javascript或jQuery中的DOM访问它。
mybutton.Attributes.Add("MyVar", "MyValue");
这将呈现给页面,然后您可以使用Javascript访问该值。
答案 4 :(得分:1)
试试这个。它对我有用。
// Client Side JQuery:
is_move_constructible/assignable
//服务器端点击方法
is_move_constructible/assignable