写惯了asp,再写asp.net的时候,发现老是带着旧的思想思考问题。
问题是这样,page1传递参数columns到page2。columns的值用分隔符隔开,转化过来将是string[]。每个string将会从数据库获取一串值,也是一维字符串数组形式,作为他的members。界面很简单,将要每行列出一个Label显示column名称,和对应的一个DropDownList来填充它的members。我是这么做的,界面显示用了DataList,模板是一个Lable和DDL。
数据绑定写了一个DataTable,两列,一列string,一列是ArrayList。分别绑定给Label控件和DDL控件。DataTable table = new DataTable("DimTable");
DataColumn colDimension = new DataColumn("Dimension");
DataColumn colMember    = new DataColumn("Members");
table.Columns.AddRange(new DataColumn[]{colDimension, colMember});
foreach(string name in requestCols)
{
DataRow row = table.NewRow();
row["Dimension"] = name;
row["Members"]   = this.GetMembersList(name);
table.Rows.Add(row);
}
this.dlDim.DataSource = new DataView(table);
this.dlDim.DataBind();界面上是,
<asp:DataList id="dlDim" runat="server">
<ItemTemplate>
  <TR>
   <TD class="11pxBoldText">
    <asp:Label id="lbDimension" runat="server">
     <%# DataBinder.Eval(Container.DataItem, "Dimension") %>
    </asp:Label>
   </TD>
   <td class="11pxBoldText">
     <asp:DropDownList id="ddlMembers" DataSource=<%# DataBinder.Eval(Container.DataItem, "Members") %> runat="server">
     </asp:DropDownList>
   </TD>
  </TR>
</ItemTemplate>
</asp:DataList>Label填充对的,ddl显示的是ArrayList对象名称....这个DDL数据绑定该如何处理啊

解决方案 »

  1.   

    你可以直接将ArrayList设成ddlMembers的DataSource,如下所示:
    <asp:DropDownList id="ddlMembers" DataSource='<%# ArrayListName %>' runat="server">,注意:首先需要将ArrayListName 声明为窗体级对象,然后在构造函数中为ArrayListName 加入值即可。
      

  2.   

    一般是在后台帮定他的
    ddlMembers.DataSouse
    和 ddlMembers.DataBind()我一般是这么进行帮定!
      

  3.   

    ArrayList就是Key/Value值对.
    所以DDL绑定的时候可以
    DDL.DataTextField=Key
    DDL.DataValueField=Value