مشاكل مع آسيا والمحيط الهادئ: زر الحدث OnClick

StackOverflow https://stackoverflow.com/questions/1005499

  •  05-07-2019
  •  | 
  •  

سؤال

وهنا هو الزر الخاص بي

<asp:Button ID="myButton" Text="Click Me" OnClick="doSomething(10)" runat="server" />

وهنا هي وظيفة الخادم

public void doSomething(int num)
{
    int someOtherNum = 10 + num;
}

وعندما أحاول ترجمة التعليمات البرمجية أحصل على خطأ "اسم الطريقة المتوقعة" للخط:

<asp:Button ID="myButton" Text="Click Me" OnClick="doSomething(10)" runat="server" />

وماذا أفعل الخطأ؟ أنا لا يسمح لتمرير القيم إلى الملقم من حدث عند_النقر؟

هل كانت مفيدة؟

المحلول

وهناك نوعان من المشاكل هنا. أولا، الحدث onclick لديه توقيع معين. ومن

MethodName(object sender, EventArgs e);

وثانيا، في الترميز، تحتاج إلى تمرير اسم الأسلوب فقط مع عدم وجود قوسين أو بارامس.

<asp:Button ID="myButton" Text="Click Me" OnClick="doSomething" runat="server" />

وبعد ذلك تغيير codebehind على النحو التالي:

public void doSomething(object sender, EventArgs e)
{
    ....
}

وفاة المعلمات يمكن القيام به على معالج الحدث العميل الجانب نقرة، في هذه الحالة OnClientClick، ولكن ليس على معالج جانب الملقم.

نصائح أخرى

وهناك حل أبسط. هل يمكن استخدام زر ASP الحدث حسب الطلب. أكثر عنه هنا: HTTP: // msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.button.oncommand.aspx

وعند_النقر زر هو معالج الأحداث. لربط وظيفة إلى eventHandler تحتاج إلى طاعة العقد التي تم تعريفها من قبل EventHandler، و<لأ href = "https://stackoverflow.com/questions/1005499/problems-with-aspbutton-onclick-event/1005514# 1005514 "> ذكر خوسيه. لا بد عند_النقر على وظيفة من شكل void doSomething(object sender, EventArgs e). لذلك يجب أن يكون لديك وظيفة من نفس الشكل.

وأنا غير متأكد لماذا تريد تمرير معلمة إلى معالج الأحداث. إذا كنت تريد أن تأخذ بعض manuplation ما عليك القيام به أن استخدام بعض التحكم الأخرى.

<asp:TextBox ID="txtNumber" runat="server" /><asp:Button ID="myButton" Text="Click Me" OnClick="doSomething" runat="server" />

وفي قانون

public void doSomething(object sender, EventArgs e)
{
int AnotherNumber=   Int32.Parse(txtNumber.Text)+10;
}

ويجب تغيير هيكل الأسلوب الخاص بك أن تكون مثل

public void doSomething(object sender, EventArgs e)
    {
        ....
    }

وولتمرير المعلمات كنت في حاجة الى عمل حول مثل هذا:

وعلى سبيل المثال إذا كنت في عنصر تحكم الاكواد يجوز لك لكن لديك المعلمة في قيمة سمة (مثل ID في هذا exapmle) ومن ثم استرجاعها في معالج جانب الخادم

وأي بمعنى لجعل عنصر تحكم تغيير لون نمط

والاكواد:

<a href="" id="Grey" runat="server" onserverclick='ApplyStyleEvent'></a>

والرمز:

protected void ApplyStyleEvent(object sender, EventArgs e)
{
    Profile["SelectedStyle"] = ((HtmlControl)sender).ID;
    Response.Redirect("");
}

ووهلم جرا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top