سؤال

أريد أن أفعل شيئا مثل هذا مع GridView:

<asp:CommandField ShowSelectButton="True" Visible='<%# return Eval("SC_TABLE") %>' />

ولكن هذا لا يعمل، والخروج مع الخطأ:

يتم دعم تعبيرات البيانات فقط على الكائنات التي لها حدث تعديل البيانات. System.Web.ui.webcontrols.comMandfield لا يحتوي على حدث Databinding.

هل هناك على أي حال يمكنني تعيين الرؤية من صفحة ASPX؟ ملاحظة: SC_TABLE موجود من DataSource، لذلك لا شيء خاطئ من هذا الجزء.

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

المحلول

يمكنك القيام بذلك مع templatefield بدلا من ذلك ...

<asp:TemplateField>
    <ItemTemplate>
        <asp:LinkButton runat="server" ID=SelectButton CommandName="SELECT" Visible='<%# Eval("SC_TABLE") %>' Text="Select" />
    </ItemTemplate>
</asp:TemplateField>

نصائح أخرى

لقد وجدت الجواب في نهاية هذا المشنور:

أساسا، تحتاج إلى التقاط حدث RowCreated على DataGrid

OnRowCreated = "gridview1_rowcreated"

بعد ذلك، في صفحة ASPX.cs استخدم التعليمات البرمجية التالية لإخفاء عناصر التحكم:

protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowIndex == 1)
    {
        e.Row.Cells[0].Controls.Clear();
    } 
}

يعمل إذا كان لديك كومانديفيلد في العمود الأول.

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