0

私には2つのクラスがあります:

public class clsShipper 
{
    public string ShipperName { get; set; }
}

public class clsJobInfo 
{
    public long JobID { get; set; }

    public clsShipper oShipper = new clsShipper();
}

私のGridViewは次のとおりです

<asp:GridView ID="dgvJobCostList" runat="server" CellPadding="4" ForeColor="#333333" style="font-family:Verdana;font-size:10px;" AutoGenerateColumns="False" OnSelectedIndexChanged="dgvJobCostList_SelectedIndexChanged">
    <RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
    <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
    <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
    <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
    <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
    <EditRowStyle BackColor="#999999" />
    <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
    <Columns>
        <asp:TemplateField>
            <ItemTemplate>
                <asp:CheckBox ID="chkRowCheck" runat="server" />
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="ID">
            <ItemTemplate>
                <asp:Label ID="lblJobID" runat="server" Text='<%# Bind("JobID") %>' />
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Shipper">
            <ItemTemplate>
            <asp:Label ID="lblShipperName" runat="server" Text='<%# Bind("ShipperName") %>' />
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>  

JobInfoClassオブジェクトを介してShipperClassのShipperNameプロパティをバインドしようとしています。以下で試してみました

protected void btnSearch_Click(object sender, EventArgs e)
{
    if (oOutputJobInfo.Length < 1)
    {
        lblMessage.Text = "Error : No Data Found";
        lblMessage.Visible = true;
        return;
    }
    else
    {
        dgvJobCostList.DataSource = oOutputJobInfo;
        dgvJobCostList.DataBind();
        dgvJobCostList.Visible = true;
    }
}

しかし、以下のエラーが発生します

DataBinding:'Nucleus.BOL.clsJobInfo'には、'ShipperName'という名前のプロパティが含まれていません。

4

1 に答える 1

2

次のように名前空間をインポートします。

<%@ Import namespace="MyNamespace.ToclsJobInfo" %>

また、clsJobInfoと異なる場合は、clsShipperの名前空間が必要になる場合があります。

次に、clsJobInfoをキャスト/ボックス解除して、プロパティoShipperを使用できます。

<asp:TemplateField HeaderText="Shipper">    
  <ItemTemplate>    
    <asp:Label ID="lblShipperName" runat="server" Text='<%# ((clsJobInfo)Container.DataItem).oShipper.ShipperName %>' />    
  </ItemTemplate>  
</asp:TemplateField>
于 2012-05-21T11:37:34.137 に答える