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クラスが呼び出され、次の 2 つのプロパティがあると仮定します。

public class Product{
    string Title;
    string SmallImage;
}

このクラスはコード ビハインドのどこかで宣言する必要があります。ページのコード ビハインド ファイルとは別のファイルで宣言するのが最適です (クラスを別の場所で再利用する必要があるため)。

ここList<Product>で、この aspx ページの分離コード ファイルに入力する必要があります。私はお勧めしPage_Loadます。

そうしないif(!IsPostBack)と、ユーザーが行ったすべての変更が上書きされ、イベントがトリガーされなくなります。

DataSource次に、このリストを後で使用する必要がありますGridViewDataBind

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 に答える