用数组元素填充网格视图中的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();
}
提前感谢:)
以下是可用于填充下拉列表的逻辑。->
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
。然后你需要告诉我们它到底在哪里。
如果它在GridView
的TemplateField
中,则应使用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));
}
}