حدث Oncheckedchanged لا يطلق النار في GridView على الإطلاق
-
18-09-2019 - |
سؤال
لدي GridView مع مربع اختيار ASP في Templatefield. يتم تعريف TemplateField على النحو التالي:
<asp:TemplateField HeaderText="HeaderName">
<ItemTemplate>
<asp:CheckBox ID="checkBoxId" runat="server" OnCheckedChanged="MyCheckChangedMethod" AutoPostBack="true"/>
</ItemTemplate>
</asp:TemplateField>
عندما أقوم بتشغيل مشروع الويب الخاص بي باستخدام نقطة توقف داخل mycheckchangedmethod وانقر فوق خانة الاختيار لا يحدث شيء. نقطة توقف لا تضرب. بلدي المصحح المصحح Visual Studio قيد التشغيل.
بالإضافة إلى ذلك، لدي AutoEventWireUp = صحيح في صفحتي في صفحتي، لذلك ليس لدي هذا الحدث يدويا. لم يكن لدي مشكلة في القيام بذلك بهذه الطريقة من قبل. لدي زر في إعداد الصفحة نفسها بالضبط بنفس الطريقة مع الحدث Click وضرب نقطة التوقف بشكل جيد في ذلك.
أيه أفكار؟
المحلول
لن يطلق حدث إعادة النشر لعنصر تحكم مربع الاختيار بشكل صحيح لأنه ضمن GridView الذي يخرب معرف عنصر التحكم.
إذا كنت بحاجة إلى مربع الاختيار لتعكس البيانات، يمكنك استخدام checkboxfield. كائن وربط بهذه الطريقة.
إذا كنت في حاجة إليها، فقم بإجراء عمل للصف، فقد ترغب في إلقاء نظرة على buttonfield. كائن باستخدام اسم الأواني الممتلكات و Rowcommand. حدث.
هناك طرق ل الوصول إلى خانات الاختيار داخل جانب خادم GridView.
نصائح أخرى
تحتاج إلى إضافة AutoPostback = True
في asp:CheckBox
بطاقة شعار.
المشكلة تحدث عندما DataBind
يتم استدعاء قبل حفل التحكم يطلق النار. إذا اتصلت DataBind
في Page_Load
ضعها فيif (!isPostBack) {}
و اتصل DataBind
في معالج الأحداث نفسها.
يحاول:
<asp:CheckBox ID="checkBoxId" runat="server" AutoPostBack=true OnCheckedChanged="MyCheckChangedMethod"/>
تأكد من أن صفحة ASPX تحتوي على CodeFile = "your_file.aspx.cs" في الأعلى.
انظر أيضا إلى أن وظيفتك يتم تعريف mycheckchangedmethod كما
وظيفة يجب أن يكون لديك كائن المرسل، eventargs e.
public void MyCheckChangedMethod(object sender, EventArgs e)
{
bool b = false;//your data here
}
تأكد أيضا من تعيين Web.config تصحيح إلى True (فكر بالفعل).