1

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

   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();
    }

提前致谢 :)

4

2 回答 2

1

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

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

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

问候。

于 2013-09-03T06:08:19.740 回答
0

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

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

但是,您确定找到您的DropDownListviaGridView1.FindControl吗?我假设你在NullRefernceException那里。然后你需要告诉我们它实际上在哪里。

如果它在TemplateFieldGridView应该使用的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));
    }
}
于 2013-08-27T09:46:42.723 回答