数据库存在一张表设定栏位显示:
  FieldType(栏位字段类型:手动输入、下拉式选择【期中可能会有以固定值或者读数据源取值】)
  FieldName (栏位字段名称,用于显示在页面上的Lable标签名称)
  FieldValue(针对于下拉式选择)
  
  用户可以通过后台设定栏位控件显示的样式、也可添加新的栏位控件在前台UI显示和不显示  例如:
  FieldType:下拉式选择
  FieldName:用户名
  FieldValue:1,2,3,4(固定值) 或 从数据库某张表读取值  难点在于在动态加载这些控件时候,如果某个控件——下拉框不是固定值,而是从表读取显示在列表框内该如何操作便好?
  求高手求助。
  

解决方案 »

  1.   

    数据库读取
      string sql = "select * from RTX_Dept where [PDeptID] = 0";
      SqlDataAdapter sda = new SqlDataAdapter(sql, conn);
      DataSet ds = new DataSet();
      sda.Fill(ds);  DropDownList1.DataTextField = "DeptName";
      DropDownList1.DataValueField = "DeptID";
      DropDownList1.DataBind();
      

  2.   

    没必要动态建服务器控件 , 你可以后台初始化HTML标签,然后前台用JS获取这些自定义标签的值比如: 后台拼接<select name="Id" id="select_Id"><option value="123"></option></select >显示到页面取值的时候用JS:var table = $("#你的外层DIV");
    var value=""//你的自定义控件的值,格式是ID#值|ID#值|ID#值
    table.find("select").each(function() {
            value += $(this).attr("name") + "#" + $(this).val().replace('#', '').replace('|', '') + "|"; //拼接
        });
      

  3.   

    DropDownList控件最后编译完也是<select>你直接在后台循环便利出来显示到页面不就行了 StringBuilder sb = new StringBuilder();
     sb.Append("<select name=\"" + dr["id"] + "\" id=\"Control_" + dr["id"] + "\">");
                            foreach (string l in dr["FieldValue"].ToString().Replace("\r", "").Split(','))//1,2,3,4你的固定值
                            {
     sb.Append("<option value=\"" + l + "\" >" + l+ "</option>");
    }
      sb.Append("</select >");