Выклік на боку сервера падзея ў asp.net ад Java Script

Вядома, будуць пазначаныя як дубляваны адзін, але пасля таго, як тоны пытання і прыкладу я не мог вырашыць маю праблему.
<�моцны> Што я хачу?
Выклік на боку сервера апрацоўшчык падзеі ў asp.net з боку кліента Java Script ён не збіраецца на боку сервера. Я праверыў яго, усталяваўшы кропку супыну, то пстрычкі старонка, але метад на боку сервера не называецца.
Мой падзея націсніце на код за гэта

  protected void btninsert_Click(object sender, EventArgs e)
  {
     //my code
  }

ASPX файл

   

Метад Javascript з'яўляецца

   function DoPost() {
        function DoPost() {
        var chk = document.getElementById('<%= chkstatus.ClientID %>');
        if (chk.checked)
            __doPostBack('<%= btninsert.ClientID %>', 'OnClick');
        return true;
        //return false;
    } 
    } 

Я таксама паспрабаваў гэта         <�Код> __ doPostBack ( 'btninsert', 'OnClick'); і __ doPostBack ( 'btninsert', ''); і $ ( 'btnSubmit') трыгер ( ». націсніце '); без поспеху.

<�Моцны> Што я раблю няправільна?

Edit: If i uses OnClick event then it is going in the server side event irrespective of the if condition in the DoPost method.

0
У чым праблема?
дададзена аўтар Amberlamps, крыніца
@Deyneka мне трэба прымацаваць яго? як?
дададзена аўтар syed mohsin, крыніца
Дзе вы прымацаванне апрацоўшчыка падзеі btninsert_Click да кнопкі?
дададзена аўтар Ihor Deyneka, крыніца
Вы можаце выкарыстоўваць OnClientClick падзея для кліента прымацаванне. Выкарыстоўвайце OnClick для падзеі сервера. msdn.microsoft.com/en- нас/бібліятэка/& hellip;
дададзена аўтар Ihor Deyneka, крыніца

6 адказы

Аааа гэта было проста. Дзякуючы ўсім адказам.
<�Моцны> Рашэнне :
Выкарыстоўвайце OnClick атрыбут на боку сервера падзеі і OnClientClick для падзеі кліента для праверкі. <�Код> OnClientClick Javascript метад вяртае True і </ілжывы код>, які вырашае, ці будзе падзея OnClick сервернага агню ці не.
Код будзе Somthing, як гэта

  <script type="text/javascript">
    function DoPost() {
        var chk = document.getElementById('<%= chkstatus.ClientID %>');
        if (chk.checked) {
            var c = confirm("are you sure?");
            if (c == true) {
                return true;
            } else
            { return false; }
        }
        return true;
    } 
</script>

І Button тэг


7
дададзена
ды @KhanhTo __doPostBack з'яўляецца агульным, але яно не адправілі назад на сервер. Можа быць, я нешта прапусціў, што патрабуецца для __doPostBack агню.
дададзена аўтар syed mohsin, крыніца
ды, __doPostBack не ў гэтым неабходным справе, але ён усё яшчэ працуе ў вашым выпадку. __doPostBack агульнае рашэнне, скажам, вы хочаце, каб выклікаць іншае падзея ўнутры DoPost() калі некаторыя ўмовы выкананыя, вы можаце патэлефанаваць __doPostBack (anotherControl, падзея). Гэта тое, што прапануецца ў маім адказе
дададзена аўтар Khanh TO, крыніца
справа ў тым, што вы забыліся вярнуць хлусня (у вашым пытанні), каб прадухіліць постбэк бягучага кантролю.
дададзена аўтар Khanh TO, крыніца
Я не ведаю, чаму код не працуе. Я правяраў.
дададзена аўтар Khanh TO, крыніца

Дадаць OnClick = "btninsert_Click» , таму што без гэтай інфармацыі, asp.net мае ніякага спосабу даведацца, які апрацоўшчык падзеі для запуску на «Click» падзея. У выпадку, калі вы хочаце кантраляваць Ці адпраўляць назад на баку кліента сцэнара. Вы можаце зрабіць нешта накшталт гэтага:



function DoPost() {
        __doPostBack('<%= btninsert.ClientID %>', 'OnClick');
        return true;
      //return false;
    } 

Note the OnClientClick="return DoPost()"

3
дададзена
зрабіў, як вы сказалі. яна заўсёды ідзе на боку сервера. У мяне ёсць умова на постбэк як у маім рэдагуемым кодзе. вось чаму я не быў вызначальным OnClick падзея.
дададзена аўтар syed mohsin, крыніца
у абноўленай функцыі, вы не вярнуліся лжывай. Вы павінны вярнуць ілжывыя у выпадку, калі вы не хочаце, паста назад
дададзена аўтар Khanh TO, крыніца
@syed Mohsin: У вашым выпадку, як я разумею. Постбэк магчыма, калі сцяжок не ўстаноўлены, то яшчэ не постбэк. Вы можаце паспрабаваць замяніць «вяртае ісціну» з «вярнуцца ілжывым». Мой код проста прыклад, вы павінны вярнуць праўдзівы або ілжывы на аснове вашага справы
дададзена аўтар Khanh TO, крыніца

ён можа працаваць !!

калі вы тэлефануеце __doPostBack ( 'btninsert', ''), дадайце ніжэй Page_Load

 protected void Page_Load(object sender, EventArgs e)
{
    if ( Request["__EVENTTARGET"] == "btninsert" ) {
        btninsert_Click(sender, e);
    }
}
3
дададзена
Ўнутры адпраўнік падзеі націсніце адліваюць у Кнопка аб'ект, каб атрымаць CommanArgument . Тым не менш, гэта кідае не ў стане кінуць выключэнне. Як я магу вырашыць гэтую праблему?
дададзена аўтар ibubi, крыніца

You can try Ajax, by using Webmethod. I used this in my project and it works fine! You may see the question, solutions and code here: http://www.codeproject.com/Questions/416748/How-to-Call-WebMethod-of-Csharp-from-JQuery

0
дададзена

змяніць сваю лінію, як гэта

0
дададзена
якая памылка ўзнікае, калі вы debugg ??? і дзе гаворка ідзе ???
дададзена аўтар Anuj, крыніца
Вы далучыце адладчык ???
дададзена аўтар Anuj, крыніца
зрабіў гэта. нічога не здарылася. той жа
дададзена аўтар syed mohsin, крыніца
памылка не прыходзіць. старонка пстрыкае адзін раз, і нічога не адбылося.
дададзена аўтар syed mohsin, крыніца
Так. я далучаны адладчык.
дададзена аўтар syed mohsin, крыніца

Выкарыстоўвайце ASP кнопку спасылкі замест кнопкі ASP. Кнопка кіравання не выклікаецца з JavaScript, таму што друкуеце прадставіць у той час як тып кнопкі спасылка кнопка.

Напрыклад я дадаў два кіравання жереха

        
         

і выканаць старонку Калі мы разглядаем крыніца беглым старонкі яго знешні выгляд, як гэта

        Link Button
        <input type="submit" name="btnbutton" value="Button" id="btnbutton" />
0
дададзена