用数组元素填充网格视图中的DropDownList

本文关键字:DropDownList 视图 网格 数组元素 填充 | 更新日期: 2023-09-27 18:29:05

我一直在尝试用数组元素填充网格视图中的DropDownList。数组由另一个网格视图中的列名组成。数组元素似乎是从其源中获取列名的,但我不知道如何将其提供给下拉列表。这是我的代码-:

   public partial class Default2 : System.Web.UI.Page
    {
     protected void Page_Load(object sender, EventArgs e)
    {
    string[] excel = new string[250];
    DataTable dtt = (DataTable)Session["griddata"];  //griddata is the gridview data from another page        
    for (int i = 0; i < dtt.Columns.Count; i++)
    {
        excel[i] = dtt.Columns[i].ColumnName;
    }
    Session["exceldata"] = excel;
    ArrayList mylist= (ArrayList)Session["exceldata"];
    DropDownList drd = (DropDownList)GridView2.FindControl("DrdDatabase");
    drd.DataSource = mylist;
    drd.DataTextField = "GridView";
    drd.DataBind();
    }

提前感谢:)

用数组元素填充网格视图中的DropDownList

以下是可用于填充下拉列表的逻辑。->

Loop at the array.
{
 For each item in array
   {
    add item to dropdownlist.items
   }
}

很抱歉没有提供确切的代码,因为我现在没有.net编辑器,但你可以使用逻辑来实现它。

问候。

您可以简单地循环它并以编程方式添加ListItems

DropDownList drd = (DropDownList)GridView1.FindControl("DrdDatabase");
foreach(string colName in mylist)
    drd.Items.Add(new ListItem( colName ));

但是,您确定通过GridView1.FindControl找到您的DropDownList吗?我想你在那里有一辆NullRefernceException。然后你需要告诉我们它到底在哪里。

如果它在GridViewTemplateField中,则应使用RowDataBound事件:

private ArrayList ExcelData
{
    get {
        object excel = Session["exceldata"];
        if (excel == null) Session["exceldata"] = new ArrayList();
        return (ArrayList)Session["exceldata"];
    }
    set {
        Session["exceldata"] = value;
    }
}
protected void GridView2_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        DropDownList ddl = (DropDownList)e.Row.FindControl("DrdDatabase");
        foreach (string colName in ExcelData)
            ddl.Items.Add(new ListItem(colName));
    }
}