需要一个asp.net控件来单击另一个asp.net控件中的按钮

时间:2013-05-15 18:29:34

标签: asp.net asp.net-mvc-3 asp.net-mvc-4

我第一次使用该网站。我感谢我之前从用户那里获得的帮助,并希望能够提供帮助。现在,问题。

我正在开发一个静态工具栏,它位于网页的底部。目的是向购买某物的用户显示几个值,并为工具栏更新信息以反映选择。目前页面上有一个框,但它位于顶部,用户必须不断滚动才能看到选项显示,价格变化等。

当点击某些自动刷新页面的复选框按钮时(由于这些复选框更改了代码段),值会更新,并且该框中的价格正常。但是,有些可能影响价格的因素需要页面上的“重新计算”按钮才能被点击。此页面上的信息将显示在带有控制器的页面上。我正在创建的工具栏是一个单独的控件。

我要做的是在工具栏中有一个按钮,它会模仿重新计算的购买按钮的操作。我试过这样做:

  Code on control page for toolbar: 
<input type="button" id="buttonID" class="buttonClass" runat="server"   onclick="__doPostBack('<%= btnIDOtherControl.ClientID %>','OnClick');" value="Recalculate" />

Code on control with the purchase info:
<asp:ImageButton ID="btnIdOtherControl" runat="server" ImageUrl="~/image.jpg"
                                AlternateText="Recalculate" OnClick="recalcFunction_Click" />

这只是当前的迭代。在我没有__doPostBack的'OnClick'片段之前,我有''。我也试过使用一些jQuery。关于从javascript触发ASP.net按钮有很多问题,但似乎都没有。

发生的事情是我已经达到了点击工具栏中的重新计算按钮实际上是刷新页面,但没有一个值发生变化。如果我单击购买页面(通常存在的位置)中的重新计算按钮,即使页面上的值有效,工具栏中的值也不会更改。如果我在从主页面重新计算后从工具栏中点击重新计算按钮,则工具栏值会反映常规值。页面的任何其他正常使用(例如自动刷新的复选框)将在两个位置正确更改值。

如果需要更多信息,请告诉我。

提前感谢帮助!

2 个答案:

答案 0 :(得分:1)

这必须使用javascript或jQuery来完成。

使用以下代码:

$("#buttonID").click(function(){
   $("#btnIdOtherControl").click();
});

这将触发其他控件上的按钮被触发。

PS:确保一旦页面以html呈现时id是正确的,因为visual studio会将控件中按钮的id附加到(控件的id)_(按钮的实际id),即If在您的页面上,您已将控件引用为

<user:control id="control" runat="server">

html上你的按钮(buttonID)的id将是control_buttonID,所以你需要在jQuery中使用它(control_buttonID)。

所以你的代码将是

$("#control_buttonID").click(function(){
   $("#control1_btnIdOtherControl").click();
});

答案 1 :(得分:0)

在你的其他控件上创建一个只有set的公共属性并在其中调用你的按钮的click事件,然后在你的工作控件上你必须只调用其他控件的公共属性。它应该是这样的:

public void PublicPropertyCallingEvent
{
    set
    {
        Button1_ClickEvent(null,null);
    }
}

您只能在需要的地方访问此属性。