2013-10-08 25 views
0

此刻正在处理Web应用程序。需要一些关于如何在asp.net/javascript中声明事件的一般信息,以及如何将这些信息嵌入代码背后(本例中为c#)。c#中的ASP.NET javascript postback和catch事件#

我自己的情况适用于: 我有一个AccountsTreeView,需要更新第二个TreeView的信息,具体取决于在AccountsTreeView中检查哪些节点。由于TreeNodeCheckChanged事件不发布回调,(简单)解决方案是实现一个简单的脚本来提供回发。 我只是不知道如何去捕捉我的代码后面的回发/事件。

javascript代码,我发现,我会嵌入到我的.aspx文件: http://forums.asp.net/p/1109288/1888180.aspx

<script language="javascript" type="text/javascript"> 

function postBackByObject() 
    { 
     var o = window.event.srcElement; 
     if (o.tagName == "INPUT" && o.type == "checkbox") 
     { 
      __doPostBack("",""); 
     } 
    } 
</script> 

我希望的结果会是这样:

protected void TreeView_onCheckBoxChanged(Object sender, someEvent? e) 
{ 
    e.SelectedNode.Text = "able to access the selected node."; 
} 

任何帮助将不胜感激!请原谅我的帖子中的任何错误,这是我的第一个毕竟。

+0

请参阅此问题:http://stackoverflow.com/questions/3591634/how-to-use-dopostback –

回答

0

你可以绑定到JavaScript事件放入您的HTML onclick='postBackByObject(this)'或类似的东西。 Here是DOM事件的列表(您在代码中使用“属性”列下的单词)。

有很多方法可以将数据从JavaScript传递到C#方法,但这里有一个简单的如何使用jQuery的例子(让我知道如果你不是)。我宁愿使用on()方法进行绑定,而不是将其硬编码到HTML中。

<script language="javascript" type="text/javascript"> 

$("#checkbox-id").on('click','postBackByObject'); 

function postBackByObject() 
    { 
     $.ajax({ 
      url: ControllerName/TreeView_onCheckBoxChanged, 
      type: "POST", 
      data:{sender:window.event.srcElement} 
     }); 
    } 
</script> 

妙处on()是可以在任何事件附加到它;它也非常有活力和写得很好。

然后,您可以将[HttpPost]属性放在C#方法上。确保它的名字正确。

我对你为什么让C#方法在事件中传递有点困惑。你想让它告诉你什么甚至称为方法吗?因为您需要将某些特定事件绑定到控件(在本例中为复选框)。当然,你不想把所有事件都绑定到同一个方法上吗?