我有一个用户控件,其中包含一些控件及其放到父页面。
在用户控件中单击服务器端按钮时,我正在调用方法。
当上面的按钮被点击到父页面的JavaScript函数时,我需要传递一个值。
我在用户控件中创建了一个私有变量及其公共属性。
单击按钮时,将一些字符串分配给公共属性。
在父aspx.cs页面中,我通过Page_Load中的用户控件ID检索了上述属性的值,并将其分配给父aspx页面中定义的隐藏变量。
现在,当我试图在Parent页面JavaScript函数中获取此隐藏变量的值时,它将变为空。
传递值的任何其他方法,首先我想到了Session var,但是Session var在JavaScript中不会有效。
以下是我尝试的代码:
UserControl ascx.cs页面:
private string _button1Clicked;
public string Button1Clicked
{
get { return _button1Clicked; }
set { _button1Clicked = value; }
}
public void Button1_Click(object sender, EventArgs s)
{
PopulateOtherViews();
Button1Clicked = "Button1Clicked";
}
父页面aspx.cs页面:
protected void Page_Load(object sender, EventArgs e)
{
hiddenButton1Click.Value = filter.Button1Clicked;
}
父页面aspx页面:
<input type="hidden" id="hiddenButton1Click" runat="server" />
function PageLoad()
{
var x = document.getElementById('hiddenButton1Click');//x.Value is "", empty
if (x.value == "Button1Clicked")
{
doOpenFilterCollapse();
}
else {
doCloseFilterCollapse();
}
}
}
专家请在这里协助。任何指针都非常有帮助。
此致
阿努拉格
答案 0 :(得分:0)
在JavaScript中试用
var x = document.getElementById('<%= hiddenButton1Click.ClientID %>');
而不是
var x = document.getElementById('hiddenButton1Click');
答案 1 :(得分:0)
你隐藏的ctl是runat="server"
所以如果你检查页面元素,你会看到像ctl00_
+控件ID这样的东西。
因此,在您当前的JavaScript中,找不到hiddenButton1Click
,因此您需要
'<%=hiddenButton1Click .ClientID%>'