zoukankan      html  css  js  c++  java
  • DropDownList Inside The GridView Method 2

    By AzamSharp

    Introduction:

    This is the second installment of the article, DropDownList Inside the GridView. In the previous article DropDownList Inside the GridView I talked about how you can populate the DropDownList inside the GridView with different data using a DataSet. In this article I will demonstrate that how you can achieve the same behavior using Entity Classes.

    Analysis:

    The first thing that you need to do is to create the Category and Product classes. Take a look at both classes below:

    public class Product

    {

    private int _productID;

    private string _productName;

    public int ProductID

    {

    get { return _productID; }

    set { _productID = value; }

    }

    public string ProductName

    {

    get { return _productName; }

    set { _productName = value; }

    }

    public Product(int productID, string productName)

    {

    _productID = productID;

    _productName = productName;

    }

    public Product()

    {

    }

    Since, a single category can have multiple products that is why I am going to declare a list of Product inside the Category class. Take a look at the Category class to have better idea.

    public class Category

    {

    private int _categoryID;

    private string _categoryName;

    private List<Product> _productList = new List<Product>();

    public int CategoryID

    {

    get

    {

    return _categoryID;

    }

    set { _categoryID = value; }

    }

    public string CategoryName

    {

    get { return _categoryName; }

    set { _categoryName = value; }

    }

    public List<Product> ProductList

    {

    get { return _productList; }

    set { _productList = value; }

    }

    public Category(int categoryID, string categoryName)

    {

    _categoryID = categoryID;

    _categoryName = categoryName;

    }

    public Category() { }

    }

    After creating the required classes we need to create some dummy data which will be used to populate the DropDownLists. In the code below I demonstrated that how you can create dummy categories and populate dummy products for the particular category. 

    private List<Category> categoryList = new List<Category>();

    private void FillList()

    {

    for (int j = 1; j <= 10; j++)

    {

    Category category = new Category(j,"Category"+j);

    for (int i = 1; i <= 10; i++)

    {

    category.ProductList.Add(new Product(i, "ProductA" + j + i));

    }

    categoryList.Add(category);

    }

     

    // Bind the list to the GridView

    GridView1.DataSource = categoryList;

    GridView1.DataBind();

    }

    The FillList() method above populates the Category class with dummy categories and products. Now, the only thing left to do is to fill the dummy data into the DropDownList. Take a look at the code below:

    private int _counter = 0;

    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)

    {

    if (e.Row.RowType == DataControlRowType.DataRow)

    {

    DropDownList ddl = (DropDownList)e.Row.FindControl("DropDownList1");

    ddl.DataSource = categoryList[_counter].ProductList;

    ddl.DataTextField = "ProductName";

    ddl.DataBind();

    // increment the counter

    _counter++;

    }

    }

    The code above is implemented in the GridView_RowDataBound event, which is fired every time a row is bound on the GridView. The heart of this application is the line ddl.DataSource = categoryList[_counter].ProductList; which retrieves the product list of a particular category and assign it to the DataSource property of the DropDownList control. After the product list is assigned to the data source I simply assign the ProductName property to the DataTextField property of the DropDownList.

    Take a look at the image below to have a clear idea what the GridView looks like at runtime.

    I hope you like article, happy coding!

  • 相关阅读:
    void die(const char *msg)
    [C] Re-execute itself from elf file.
    在cnblog中使用syntax方法
    CVE-2016-0822-MTK-drivers/misc/mediatek/connectivity/common/combo/linux/wmt_dev.c#1158
    CVE-2016-2502-drivers/usb/gadget/f_serial.c in the Qualcomm USB driver in Android. Buffer Overflow Vulnerability reported by #plzdonthackme, Soctt.
    Insertion Sort
    [Java] 歐付寶金流串接教學
    [面試題]C符號的優先順序
    [LeetCode]Search a 2D Matrix
    [leetcode] Search a 2D Matrix II
  • 原文地址:https://www.cnblogs.com/xucanzhao/p/388517.html
Copyright © 2011-2022 走看看