سؤال

لدي 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 (فكر بالفعل).

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