为什么不能使用`Invokemember(“click”)`以编程方式点击我的按钮?

问题描述:

我想通过WebBrowserControl从我的应用程序的网站中获取数据。我可以成功登录,但是当我以编程方式呼叫btnsearch.Invokemember("click")时,我收到一个JavaScript错误。如果我在WebBrowserControl上交互式地点击按钮,我收不到任何错误,一切正常。为什么不能使用`Invokemember(“click”)`以编程方式点击我的按钮?

在aspx页面我有叫一个Ajax面板一个JavaScript函数:

<script type="text/javascript"> 
/*<![CDATA[*/ 
window["ctl00_WorkSpace_ctlCustAVIHistory_ajxResultPanel"] = new RadAjaxPanelNamespace.RadAjaxPanel({ClientID:"ctl00_WorkSpace_ctlCustAVIHistory_ajxResultPanel",EnableOutsideScripts:false,EnablePageHeadUpdate:true,Url:"/app/ModuleCustomer/ViewAVITransactions.aspx",LoadingPanelID:"ctl00_WorkSpace_ctlCustAVIHistory_LoadingPanel1",ActiveElementID:"",ClientEvents:{OnRequestStart:"",OnRequestSent:"",OnResponseReceived:"",OnResponseEnd:""},FormID:"aspnetForm",UniqueID:"ctl00$WorkSpace$ctlCustAVIHistory$ajxResultPanel"});/*]]>*/ 
</script> 

它产生的UniqueID。如果我们通过代码点击btnsearch,则此唯一标识为空。

function onClickButton(rName) 
{ 
    if(validateData()) 
    {  
     document.getElementById("ctl00_WorkSpace_ctlCustAVIHistory_hdnReset").value = "0";  
     ctl00_WorkSpace_ctlCustAVIHistory_ajxResultPanel.AjaxRequest("NewSearch"); ///these caling down function  
    }  
} 

RadAjaxPanelNamespace.RadAjaxPanel.prototype.AjaxRequest = function (eventArgument) {  
    this.AjaxRequestWithTarget(this.UniqueID, eventArgument);//this.UniqueID giving null from program click mouse click it is giving correct id 
}; 

任何想法为什么会发生这种情况?

private const string STR_Field_userid = "field_userid"; 
    private const string STR_Field_password = "field_password"; 
    private const string STR_Submit = "submit";    

     document.GetElementById(STR_Field_userid).InnerText = UserId; 
     document.GetElementById(STR_Field_password).InnerText = Password; 
     document.Forms[0].InvokeMember(STR_Submit);