Member 13569764 Ответов: 1

Как передать null для байта[] для отображения изображения в сетке


Здесь я связываю значения datatable с сеткой, но когда datatable имеет нулевые значения, он возвращает ошибку

Additional information: Unable to cast object of type 'System.DBNull' to type 'System.Byte[]'.


Что я уже пробовал:

<asp:GridView ID="grdDoctorConfirmation" CssClass="table table-striped table-bordered table-hover" runat="server" AutoGenerateColumns="False">
            <Columns>
                <asp:TemplateField HeaderText="Select">
                    <HeaderTemplate>
                        <asp:CheckBox ID="chkAll" runat="server" AutoPostBack="True" />
                    </HeaderTemplate>
                    <ItemTemplate>
                        <asp:CheckBox ID="chkUpdate" runat="server" AutoPostBack="True"  />
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="SNo" >
                    <ItemTemplate>
                <%# Container.DataItemIndex + 1 %>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:BoundField DataField="AppointmentID" HeaderText="ID" HeaderStyle-CssClass="hiddencolumn"  ItemStyle-CssClass="hiddencolumn">
                <HeaderStyle CssClass="hiddencolumn" />
                <ItemStyle CssClass="hiddencolumn" />
                </asp:BoundField>
                <asp:BoundField DataField="PatientID" HeaderText="Patient" />
                <%--<asp:BoundField DataField="DoctorID" HeaderText="Doctor" />--%>
                <asp:BoundField DataField="DoctorName" HeaderText="Doctor" />
                <%--<asp:BoundField DataField="Treatment" HeaderText="Treatment" />--%>
                <asp:BoundField DataField="TreatmentName" HeaderText="Treatment" />
                <asp:BoundField DataField="ADate" HeaderText="Date" DataFormatString="{0:dd/MM/yyyy}"/>
                <asp:BoundField DataField="TreatmentDate" HeaderText="Date" DataFormatString="{0:dd/MM/yyyy}"/>
                <asp:BoundField DataField="ASlotID" HeaderText="Slot" />
                <asp:BoundField DataField="Remarks" HeaderText="Remarks" />
                <asp:TemplateField HeaderText="Photo">
                    <ItemTemplate>
                                    <asp:Image ID="imgPhoto" runat="server" ImageUrl='<%# "data:Image/png;base64,"+Convert.ToBase64String((byte[])Eval("Photo")) %>' Height="50px" Width="50px" />
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
        </asp:GridView>



public void FillRequestAppointment()
        {
            //DateTime today = DateTime.Today;
            //string todaydate = today.ToString("MM/dd/yyyy");
            DataTable dt = dabll.GetDoctorsConfirmation(uCls.UserName);
            obj.FillGrid(grdDoctorConfirmation, dt);
        }

1 Ответов

Рейтинг:
1

Karthik_Mahalingam

пробовать

DataTable dt = dabll.GetDoctorsConfirmation(uCls.UserName);
          dt.AsEnumerable().ToList().ForEach(row =>   row["Photo"] = row["Photo"] == DBNull.Value ? null : row["Photo"] ); // handles dbnull value
          obj.FillGrid(grdDoctorConfirmation, dt);