عناصر تحكم في قاعدة البيانات المتعددة في عمود GridView واحد

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

سؤال

لدي طريقة عرض شبكة مرتبطة بمجموعة بيانات. في شبكة ، لدي عمود DefaultValue ، والذي يحتوي على ثلاثة عناصر تحكم فيه - قائمة منسدلة ، وخانة اختيار وعلبة نصية. اعتمادًا على البيانات التي تأتي فيها ، يمكن أن تتحول إلى أي من عناصر التحكم هذه. كل شيء بسيط بما فيه الكفاية عندما نحتاج فقط لعرض البيانات - في حدث GridView_Prerender أنا ببساطة جعل أحد عناصر التحكم مرئية. التحكم هو الإعداد مثل ما يلي:

<asp:TemplateField HeaderText="Default Value" SortExpression="DefaultValue">
 <ItemTemplate>
  <asp:TextBox ID="txt_defaultValue_view" runat="server" Text='<%# Bind("DefaultValue") %>' Enabled ="false" />
  <asp:DropDownList ID="ddl_defaultValue_view" runat="server" Enabled ="false" />
  <asp:CheckBox ID="chk_defaultValue_view" runat="server" Enabled ="false"  />
 </ItemTemplate>
 <EditItemTemplate>
  <asp:TextBox ID="txt_defaultValue_edit" runat="server" Text='<%# Bind("DefaultValue") %>'/>
  <asp:DropDownList ID="ddl_defaultValue_edit" runat="server" />
  <asp:CheckBox ID="chk_defaultValue_edit" runat="server" />
 </EditItemTemplate>
</asp:TemplateField>

تبدأ مشكلتي عندما أكون في وضع التحرير وأحتاج إلى تحديث الشبكة ببيانات جديدة. نظرًا لأن عنصر التحكم في مربع النص هو DATABOND فقط ، يمكن لحدث ROLUPDATE فقط الوصول إلى البيانات من عمود مربع النص ويتم تجاهل جميع بياناتي الأخرى ببساطة. لا يمكنني أيضًا البيانات باستخدام مربع الاختيار والتحكم في القائمة المنسدلة ، حيث يمكنهم الحصول على استثناء نوع بيانات غير صالح. لذلك ، هل يعرف أي شخص كيف يمكنني تحديث عمود يحتوي على ثلاثة عناصر تحكم مختلفة ، حيث قد يكون لكل من عناصر التحكم الثلاثة هذه بيانات صالحة؟

شكرًا

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

المحلول

أولاً ، أود أن أقوم بتبديل عناصر التحكم في Rowdatabound من الشبكة وليس على Prerender ، لأنه يمكن أن يتغير فقط في ربط البيانات وليس على كل postback. يمكنك أيضًا ربط القائمة المنسدلة بمصاعد البيانات الخاصة بها ، وتغيير الحالة المحددة في مربع الاختيار وتعيين محول النص لمربع النص وفقًا لـ Dataitem من الصف. عندما تقوم بالتحديث ، يمكنك العثور على عناصر التحكم الخاصة بك مع FindControl في rowupdating واحصل على قيمها (Fe RetropDownList.SelectedValue).

نصائح أخرى

Gridview لديه زوج من الأحداث:

rowupdating/rowupdated

rowdeleting/rowdeleted

....

في حالتك ، يتم تسمى ROLOUPDATING - يسمى مباشرة قبل تنفيذ التحديث ، لذلك ابحث عن التحكم المتوقع في الصف (قول مربع الاختيار) وقم بالتحضير قبل المرور إلى قاعدة البيانات

كوسيلة أخرى ، إمكانية مراجعة إمكانية استخدام تحديث الأحداث ObjectDataSource - إنها طريقة معتادة لتحديد المعلمات لتنفيذ الاستعلام.

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