Как заполнить AspxGridView с помощью выпадающего списка - PullRequest
0 голосов
/ 18 октября 2019

Я хочу использовать AspxGridView со списком в столбце. Для этого я создаю сетку следующим образом:

<dx:ASPxGridView ID="gridDX" ClientInstanceName="grid" runat="server" KeyFieldName="BelMat" OnDataBinding="gridDX_DataBinding" AutoGenerateColumns="False" Theme="DevEx" OnPageIndexChanged="gridDX_PageIndexChanged">  
    <Columns>  
        <dx:GridViewCommandColumn ShowClearFilterButton="True" VisibleIndex="0">  
        </dx:GridViewCommandColumn>  
        <dx:GridViewDataColumn FieldName="Print" Caption="Print" VisibleIndex="1" Settings-AllowAutoFilter="False" Settings-AllowHeaderFilter="False">  
            <DataItemTemplate>  
                <dx:ASPxHyperLink ID="hypPrint" runat="server" ImageUrl="~/img/printer_call_off.png" ImageWidth="18px" OnDataBound="hypPrint_OnDataBound"></dx:ASPxHyperLink>  
            </DataItemTemplate>  
        </dx:GridViewDataColumn>  
        <dx:GridViewDataColumn FieldName="Edit" Caption="Show" VisibleIndex="2" Settings-AllowAutoFilter="False" Settings-AllowHeaderFilter="False">  
            <DataItemTemplate>  
                <dx:ASPxHyperLink CssClass="fancybox" ID="hypShowEdit" ClientInstanceName="hypShowEdit" runat="server" ImageWidth="18px" ImageUrl="~/img/magnifying-glass_call_off.png" Text="Show/Edit" NavigateUrl="#">  
                </dx:ASPxHyperLink>  
            </DataItemTemplate>  
        </dx:GridViewDataColumn>  
        <dx:GridViewDataColumn FieldName="BelNo" Caption="PO No." VisibleIndex="3"></dx:GridViewDataColumn>  
        <dx:GridViewDataColumn FieldName="BelMat" Caption="PO Item" VisibleIndex="4"></dx:GridViewDataColumn>  
        <dx:GridViewDataColumn FieldName="Material" Caption="Material No." VisibleIndex="5"></dx:GridViewDataColumn>  
        <dx:GridViewDataColumn FieldName="Description" Caption="Material Description" VisibleIndex="6" Settings-AllowAutoFilter="False" Settings-AllowHeaderFilter="False"></dx:GridViewDataColumn>  
            <dx:GridViewDataComboBoxColumn Caption="Pack. Ins." VisibleIndex="7" FieldName="PACKAGING" Settings-AllowAutoFilter="False">  
            <PropertiesComboBox TextField="Ad" ValueField="ID">  
            </PropertiesComboBox>  
        <dx:GridViewDataColumn FieldName="Quantity" Caption="Quantity" VisibleIndex="8" Settings-AllowAutoFilter="False" Settings-AllowHeaderFilter="False">  
            <DataItemTemplate>  
                <dx:ASPxTextBox ID="txtNumberOfPrint" runat="server" Width="60px" Text="1"><dx:ASPxTextBox>  
            </DataItemTemplate>  
        </dx:GridViewDataColumn>  
        <dx:GridViewCommandColumn VisibleIndex="9" Caption="Save" ButtonType="Image" ShowInCustomizationForm="False" ShowUpdateButton="True">  
            <CustomButtons>  
                <dx:GridViewCommandColumnCustomButton ID="btnSend" Text="Send ATB" Image-Width="18" Image-Url="../../img/upload_call_off.png">  
                </dx:GridViewCommandColumnCustomButton>  
            </CustomButtons>  
        </dx:GridViewCommandColumn>  
    </Columns>  
</dx:ASPxGridView>

И у меня есть такие классы:

public class SchedulingAgreementHeaderDTO  
{  
    public string BelNo { get; set; }  
    public string BelMat { get; set; }  
    public string Material { get; set; }  
    public string Description { get; set; }  
    public IEnumerable<ValueObject> PACKAGING { get; set; }  
}  

public class ValueObject  
{  
    public string ID { get; set; }  
    public string Ad { get; set; }  
}

Я заполняю свой список IEnumerable, называемый data3, как в изображении enter image description here

List<SchedulingAgreementHeaderDTO> sahList = new List<SchedulingAgreementHeaderDTO>();  
            foreach (var item in Tlist)  
            {  
                SchedulingAgreementHeaderDTO sah = new SchedulingAgreementHeaderDTO  
                {  
                    BelNo = item.BelNo,  
                    BelMat = item.BelMat,  
                    Material = item.Material,  
                    Description = item.Description,  
                    PACKAGING = (from x in bizObj.GetPackagingInstructions("SI", item.Material).returnValue  
                                 select new ValueObject()  
                                 {  
                                     ID = x.ID,  
                                     Name= x.Ad
                                 }).ToList()  
                };  

                sahList.Add(sah);  
            }  
            var data3 = sahList.AsEnumerable();

Я хочу заполнить комбинированный список значениями УПАКОВКИ. УПАКОВКА может содержать более 1 значения. Если я не заполняю PACKAGING и не привязываю данные к сетке, сетка связывается и работает нормально. Когда я хочу использовать PACKAGING для выпадающего списка, я получаю эту ошибку:

IConvertible nesne tarafından uygulanmalıdır. Açıklama:  Geçerli web isteği yürütülürken işlenmemiş özel durum oluştu. Lütfen hata ve kod içinde kaynaklandığı yer hakkında daha fazla bilgi almak için yığın izlemesini gözden geçirin.

    Özel Durum Ayrıntıları:  System.InvalidCastException: IConvertible nesne tarafından uygulanmalıdır.

Kaynak Hatası:

Satır 54:  
Satır 55:             if (!IsPostBack)  
Satır 56:                 gridDX.DataBind();  
Satır 57:         }  
Satır 58: 

Как я могу решить эту проблему?

...