Почему я не могу использовать `Invokemember (" click ")` для программного нажатия на мою кнопку? - PullRequest
0 голосов
/ 31 мая 2011

Я пытаюсь получить данные с веб-сайта в моем приложении через WebBrowserControl.Я могу успешно войти в систему, но когда я вызываю btnsearch.Invokemember("click") программно, я получаю ошибку JavaScript.Если я нажимаю кнопку в интерактивном режиме на WebBrowserControl, я не получаю сообщение об ошибке, и все работает нормально.

На странице aspx у меня есть одна функция JavaScript для вызова панели Ajax:

<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>

Он производит уникальный идентификатор.Если мы нажмем 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 
};

Есть идеи, почему это происходит?

1 Ответ

1 голос
/ 25 октября 2011
    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);
...