ASP.NET: قيمة GridView تترك فارغة عندما عمود غير مرئي

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

  •  03-07-2019
  •  | 
  •  

سؤال

وأنا باستخدام قائمة الكائنات كمصدر للبيانات من بلدي GridView وعندما وضع أعمدة للا تكون مرئية التحديثات تفشل بسبب تغيير قيمة هذه الأعمدة إلى فارغة (والعمود لا يسمح بالقيم الخالية) . لا توجد قيم عند الأعمدة مرئية ولكن في الحقيقة أنا لا ترغب في عرض هذه الأعمدة لأنه، بالنسبة للجزء الأكبر، هم الأعمدة ID أن المستخدم لا يحتاج حقا أن نرى.

تحرير: لقد حاولت الخيار حقل مخفي لكنه لا يزال تعيين القيمة إلى قيمة خالية. لقد ألقيت نظرة على مصدر الصفحة وجود مجال الخفية مع القيمة المناسبة ...

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

المحلول

ولقد وجدت هذا الحل لمحاكاة الأعمدة المخفية في صافي 2.0:

وتنفيذ هذا الحدث GridView.RowCreated.

protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e)
{
    e.Row.Cells[1].Visible = false;
    e.Row.Cells[2].Visible = false;
}

وهنا على الرابط: <أ href ل = "http://www.beansoftware.com/ASP.NET-Tutorials/GridView-Hidden-Column.aspx" يختلط = "نوفولو noreferrer"> http://www.beansoftware.com/ASP.NET-Tutorials/GridView -Hidden-Column.aspx

وأعتقد في 2.0 عندما يكون عمود غير مرئي فشل ربط البيانات لهذا العمود ولكن هذا الأسلوب يخفي بعد أن تم إنشاء رابط لذلك الحيل النظام (؟).

نصائح أخرى

توصي Microsoft باستخدام DataKeyNames الملكية للتحكم GridView.

وبدلا من استخدام التعليمات البرمجية الخلفية لإخفاء بعض الأعمدة، يمكنك فقط إزالة الحقول بد من GridView وتحديدها في الممتلكات DataKeyNames:

<asp:GridView ID="GridView1" runat="server" 
        DataKeyNames="SalesOrderID,SalesOrderDetailID"
        DataSourceID="LinqDataSource1">

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

إذا كنت لا تفعل ذلك بالفعل، فما استقاموا لكم فاستقيموا النظر في استخدام الأعمدة قالب للبيانات الخاصة بك والقيام بيانات "دليل" ملزم (إما "المضمنة" أو في التعليمات البرمجية خلف الصفحة باستخدام الحدث RowDataBound). وبهذه الطريقة يمكنك اختبار لDBNULL وببساطة تجاهل وضع القيمة في العمود إذا كانت القيمة فارغة. وهذا سوف يسمح أيضا للأعمدة أن اختبأ بشكل صحيح.

ويمكنك أن تفعل ذلك مع الحقول المخفية عن القيم التي لا تريد عرضها. وبهذه الطريقة يمكنك الاستمرار في استخدام نفس ربط البيانات وغيرها من المهام كما تفعل اليوم.

عند يتم حقل داخل GridView غير مرئية، والقيم خلايا لها ليست أكثر يسرا أو هذه هي خالية أو فارغة.

ومن أجل حل هذه المسألة، لديك فقط لتعيين أسماء الأعمدة (الحقول المخفية) في الممتلكات DataKeyNames من GridView عن طريق القيام DataKeyNames="colName1,colName2,colName3".

وبعد ذلك الوصول إلى قيم الخلية على أنها cellValue = GridView1.DataKeys[0]["ID"].ToString();

ولقد كتبت عن وظيفة بسيطة مما يدل على حل لمشكلتك في هنا .

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