কীভাবে___পোস্টব্যাক () ব্যবহার করবেন


161

আমি এএসপি.এনইটি ব্যবহার করে একটি অ্যাসিঙ্ক্রোনাস পোস্টব্যাক তৈরি করার চেষ্টা করছি __doPostBack(), তবে কীভাবে করব তা আমার কোনও ধারণা নেই। আমি ভ্যানিলা জাভাস্ক্রিপ্ট ব্যবহার করতে চাই।

বোতাম ক্লিকের মতো কিছু সাধারণ __doPostBack()ঘটনা ঘটায় আগুন জ্বলতে পারে। আমি কেবল পদ্ধতিটি কীভাবে কাজ করে তা জানার চেষ্টা করছি।



9
সবার আগে __doPostBack আপডেটপ্যানেলের অভ্যন্তরে নিয়ন্ত্রণ দ্বারা ট্রিগার না করা পর্যন্ত অ্যাসিক্রোনাস অ্যাকশন তৈরি করে না।
লাডিস্লাভ মিঙ্কা

কেন এই ট্যাগ করা সি # এবং জাভাস্ক্রিপ্ট । আমি জাভাস্ক্রিপ্ট অংশটি বুঝতে পারি , তবে সি # অংশটি নয় not
সলোমন উকো

1
@ সলোমন উকো - কারণ __doPostBack এর ফলে পৃষ্ঠাটি তার সার্ভার-সাইড প্রয়োগের দিকে পোস্ট করতে পারে যা সম্ভবত সি # তে হবে (
ভিবি.এনইটি

1
এটি সাধারণত কাজ করার সময়, ম্যানুয়ালি সন্নিবেশ __doPostBackকরা আসলে সমর্থিত নয়। আপনার পৃষ্ঠায় যদি এমন কোনও কিছু না থাকে যা কোনও পোস্টব্যাক ট্রিগার করে, তবে এসপ নেট __doPostBackফাংশনটি সংজ্ঞায়িত করতে পারে না। সমর্থিত পন্থা কল করা হয় ClientScriptManager.GetPostBackEventReference, যা ফর্মটিতে একটি স্ট্রিং প্রদান __doPostBack(...)করে এবং এটি __doPostBackসংজ্ঞায়িত করে তা নিশ্চিত করে ।
ব্রায়ান

উত্তর:


156

উদাহরণস্বরূপ, বিটিএনস্যাভ নামক বোতামটি দিয়ে আপনি এটি আপনার ওয়েব ফর্মে চেষ্টা করতে পারেন:

<input type="button" id="btnSave" onclick="javascript:SaveWithParameter('Hello Michael')" value="click me"/>

<script type="text/javascript">
function SaveWithParameter(parameter)
{
  __doPostBack('btnSave', parameter)
}
</script>

এবং আপনার কোডের পিছনে মানটি পড়তে এবং এটি চালনার জন্য এই জাতীয় কিছু যুক্ত করুন:

public void Page_Load(object sender, EventArgs e)
{
  string parameter = Request["__EVENTARGUMENT"]; // parameter
  // Request["__EVENTTARGET"]; // btnSave
}

চেষ্টা করে দেখুন এবং এটি আপনার পক্ষে কাজ করে কিনা তা আমাদের জানান।


1
কেবল একটি তাত্ক্ষণিক প্রশ্ন, __EVENTARGUMENT হবে প্যারামিটার বা বিটিএনসেভ?
harsimranb

3
এটি প্যারামিটার। __EVENTTARGET আপনাকে বোতামটি দেবে।
মিঃ মিঃ

আমার কাছে যদি দুটি বা ততোধিক বোতাম থাকে যা __doPostBack করে তবে আমি কীভাবে পৃষ্ঠা_লোডে () সার্ভারে তাদের পার্থক্য করব।
খালিদ খান

1
আমার একাধিক প্যারামিটার থাকলে কী হবে?
উইলসন

1
@ উইলসন অন্যরকম ভেবেছিলেন যে আপনার যুক্তি জাসন ডেটা হতে পারে যা আপনার সি # তে কোনও বস্তুর মানচিত্র তৈরি করতে পারে, তারপরে আপনি জসন.ন.টাকে ডিজেরিয়াল / সিরিয়ালের আপত্তি ইত্যাদিতে ব্যবহার করতে পারেন ইত্যাদি।
মিঃ মিঃ

25

ফ্যান্সিবক্স এবং / অথবা jQuery ডায়ালগের ভিতরে পোস্টব্যাকের জন্য সার্ভার-সাইড নিয়ন্ত্রণগুলি পাওয়ার এটি একটি ভাল উপায় । উদাহরণস্বরূপ, ফ্যান্সিবক্স-ডিভিতে:

   <asp:Button OnClientClick="testMe('param1');" ClientIDMode="Static"  ID="MyButton"  runat="server" Text="Ok" >
</asp:Button>

javascript:

function testMe(params) {
    var btnID= '<%=MyButton.ClientID %>';          
    __doPostBack(btnID, params);
}

সার্ভার-সাইড পেজ_ল্ড:

 string parameter = Request["__EVENTARGUMENT"];
 if (parameter == "param1")
     MyButton_Click(sender, e);

4
ইউনিকআইডি ব্যবহার করা উচিত, ক্লায়েন্টআইডি নয়।
গার গডফ্রে

বা এর ClientIDMode="Static"বৈশিষ্ট্য সেট করুন MyButton, যাতে এএসপি বোতামটির আইডি ম্যাঙ্গেল না করে।
ডেভিড আর ট্রিবিলে

14

কীভাবে কাজ করে তার একটি সংক্ষিপ্ত টিউটোরিয়াল এখানে's__doPostBack()

সত্যি কথা বলতে কি আমি এটাকে বেশি ব্যবহার করি না; কমপক্ষে সরাসরি অনেক সার্ভার নিয়ন্ত্রণ, (যেমন, Button, LinkButton, ImageButton, অংশগুলি GridView, ইত্যাদি) ব্যবহার __doPostBackতাদের পোস্টে ফিরে প্রক্রিয়া হিসেবে।


6 বছর পরে দ্রুত এগিয়ে; এখনও যদি এটি ব্যবহার করে তবে আমি হতবাক হয়ে যাব। ওয়েব বিকাশের দিকে দৃষ্টিভঙ্গি সাধারণত এমন মানসিকতা থেকে সরে গেছে যেখানে এই জাতীয় জিনিস ব্যবহৃত হয়।
ফিল

@ ফিল - হাহা, আমি গতকাল এই থ্রেডটি পড়ছিলাম যেখানে এটি প্রয়োগ করা হয়েছে এমন একটি বাগের দিকে তাকানোর সময় :) এটি আজ ও যুগে বেশ প্রত্নতাত্ত্বিক বলে মনে হচ্ছে
টেরি দেলাহান্ট

12
দ্রুত ফরওয়ার্ড করা 6 বছর ... এবং এএসপি.নেট ওয়েব ফর্মগুলি এখনও এটি করে। অতএব গ্রহণযোগ্য উত্তর অপ্রতিরোধ্য upvoting।
kbrimington

@ কেব্রিমিংটন: আমি বলিনি যে এএসপি। নেট এখনও "এটি করবে না"। আমি এটি খুব বেশি পরিবর্তন হবে বলে আশা করি না। আমার অর্থ হ'ল কম লোকেরা নতুন বিকাশের জন্য এএসপি.এনইটি ওয়েবফর্ম ব্যবহার করে এবং অন্যরা এটিকে সরিয়ে চলেছে।
ফিল

10

আমি এই পোস্টে কিছু যুক্ত করতে চাই asp:button। আমি ক্লায়েন্টআইডি চেষ্টা করেছি এবং এটি আমার পক্ষে কাজ করবে বলে মনে হচ্ছে না:

__doPostBack('<%= btn.ClientID%>', '');

তবে, ইউনিকআইডি পেয়ে সার্ভারে ফিরে পোস্ট করা মনে হয়, নীচের মত:

__doPostBack('<%= btn.UniqueID%>', '');

এটি ভবিষ্যতে অন্য কাউকে সহায়তা করতে পারে, তাই এটি পোস্ট করে।


1
হ্যাঁ আমি সমস্যায় পড়ছিলাম ClientID, কারণ আমি ব্যবহার করছিলাম ClientIDMode = StaticUniqueIDকাজ করা ব্যবহার ।
ফিটার

আমি এটি কাজ করার চেষ্টা করছিলাম এবং ক্লায়েন্টআইডি বা ইউনিকআইড উভয়ই আমার পক্ষে কাজ করবে না।
আতামতা

ঈশ্বর! কয়েক দিন এই সমস্যাটি সমাধান করার চেষ্টা করছে। ইউনিকআইডি সমস্যাটি সমাধান করেছে। ধন্যবাদ দোস্ত!
ফয়েজ ইনফাই

2

পুরানো প্রশ্ন, তবে আমি কিছু যুক্ত করতে চাই: কল করার সময় doPostBack()আপনি ক্রিয়াটির জন্য সার্ভার হ্যান্ডলার পদ্ধতিটি ব্যবহার করতে পারেন।

উদাহরণস্বরূপ:

__doPostBack('<%= btn.UniqueID%>', 'my args');

সার্ভারে আগুন লাগবে:

protected void btn_Click(object sender, EventArgs e)

যুক্তিটি পাওয়ার আরও ভাল উপায় আমি খুঁজে পাইনি, তাই আমি এখনও ব্যবহার করছি Request["__EVENTARGUMENT"]


0

অন্যরা যেমন বলেছে, আপনাকে __doPostback () পদ্ধতিতে নিয়ন্ত্রণের ইউনিকআইডি সরবরাহ করতে হবে।

__doPostBack('<%= btn.UniqueID %>', '');

সার্ভারে, জমা দেওয়া ফর্মের মানগুলি পৃষ্ঠার ক্ষেত্রগুলির নাম বৈশিষ্ট্য দ্বারা চিহ্নিত করা হয় ।

কারণ UniqueID কাজ করে কারণ UniqueID এবং নাম আসলে একই জিনিস যখন সার্ভার নিয়ন্ত্রণ HTML এ অনুষ্ঠিত হয়।

এখানে একটি নিবন্ধ যা ইউনিকআইডি কী তা বর্ণনা করে:

ইউনিকআইডিডি বৈশিষ্ট্যটি ইনপুট ক্ষেত্রগুলির (চেকবক্স, ড্রপডাউন তালিকা এবং লুকানো ক্ষেত্রগুলি) এইচটিএমএল "নাম" বৈশিষ্ট্যের জন্য মান প্রদান করতে ব্যবহৃত হয়। ইউনিকআইডি পোস্টব্যাকগুলিতেও প্রধান ভূমিকা পালন করে। সার্ভার নিয়ন্ত্রণের স্বতন্ত্র বৈশিষ্ট্য, যা পোস্টব্যাকগুলিকে সমর্থন করে __EVENTTARGET লুকানো ক্ষেত্রের জন্য ডেটা সরবরাহ করে। এএসপি.এনইটি রানটাইম তারপরে পোস্টব্যাককে ট্রিগার করে এবং তারপরে তার রাইসপোস্টব্যাকভেন্ট পদ্ধতিটিকে কল করে এটি নিয়ন্ত্রণ করতে __EVENTTARGET ক্ষেত্রটি ব্যবহার করে।

src: https://www.telerik.com/blogs/the-differences-between-id-clientid-and-uniqueid


0

এইভাবেই আমি এটি করি

    public void B_ODOC_OnClick(Object sender, EventArgs e)
    {
        string script="<script>__doPostBack(\'fileView$ctl01$OTHDOC\',\'{\"EventArgument\":\"OpenModal\",\"EncryptedData\":null}\');</script>";
        Page.ClientScript.RegisterStartupScript(this.GetType(),"JsOtherDocuments",script);               
    }
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.