1

我有这个GridView我正在尝试将数据绑定到,我需要使用我的所有属性创建一个新类并将它们显示在Grid. 这应该是一个列表集合吗,因为我尝试了一个列表,但Grid无法在列表中找到名称。

我通常不处理收藏品。所以,我对它不是很熟悉。我只需要一些关于这应该如何的指导。我知道我的收藏需要一个类,我的属性是字符串。

//This is where I am stuck, not sure how to set these and put these in a list.
public class Product
{
    string Title;
    string SmallImage;
}
<form id="ResultsForm" runat="server">
    <div id="SearchBox">
        <asp:TextBox ID="SearchBoxText" runat="server" Height="20px" Width="400px"></asp:TextBox>
        <asp:Button ID="SearchButton" runat="server" Height="30px" Width="100px" Text="Search" OnClick="SearchButton_Click" />
    </div>

    <div id="ResultsTable">
        <asp:GridView runat="server" ID="myGrid" 
                      OnRowCommand="MyGrid_RowCommand">
            <Columns>
                <asp:TemplateField>
                    <ItemTemplate>
                        <img src='<%#Eval("SmallImage") %>' />
                    </ItemTemplate>
                </asp:TemplateField>

                <asp:TemplateField>
                    <ItemTemplate>
                        <div>Title: <%#Eval("Title") %>  </div>
                        <div>Weight: <%#Eval("Weight") %>  </div>
                        <asp:Button runat="server" ID="GetOfferButton" CommandArgument='<%#Eval("OfferID") %>'></asp:Button>
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
        </asp:GridView>
    </div>
</form>
4

2 回答 2

3

1)在单独的文件中创建类......像Product.cs

 public class Product
    {

        public string Title { get; set; }
        public string SmallImage { get; set; }
    }

2)在你的 aspx.cs

 protected void Page_Load(object sender, EventArgs e)
            {

                if(!Page.IsPostBack)
                {
                 List<Product> lst = new List<Product>();
                 lst.Add(new Product(){Title="title 1", SmallImage = "some path"});
                 lst.Add(new Product(){Title="title 2", SmallImage = "some "});
                 myGrid.DataSource = lst;
                 myGrid.DataBind();
                }

            }
于 2012-11-03T23:16:01.303 回答
0

假设您的类被调用Product并具有以下两个属性:

public class Product{
    string Title;
    string SmallImage;
}

您必须在代码隐藏中的某处声明此类,最好在页面的代码隐藏文件之外的另一个文件中声明(因为您可能希望在其他地方重用该类)。

现在您必须填写List<Product>此 aspx 页面的代码隐藏文件。我会建议Page_Load

请注意,您应该只这样做if(!IsPostBack),否则您将覆盖用户所做的所有更改并阻止触发事件。

然后你需要使用这个列表作为DataSourceGridViewDataBind之后。

protected void Page_Load(object sender, EventArgs e) 
{
    if(!Page.IsPostBack)
    {
        List<Product> list = new List<Product>();
        Product prod = new Product();
        // set the properties
        list.Add(prod);
        // add other products
        gridView1.DataSource = list;
        gridView1.DataBind();
    }
}
于 2012-11-03T23:19:08.037 回答