Пример #1
0
    private void ddl_SelectedIndexChanged(object sender, EventArgs e)
    {
        int          pos = 0; //关联参数名称在tableParas中的位置
        string       sql;
        int          counts = 0;
        Control      cn;
        HtmlComboBox ddlNext;                       //被关联的参数
        HtmlComboBox ddl    = (HtmlComboBox)sender; //正在选择时的参数
        int          id     = Convert.ToInt16(ddl.ID);
        CellReport   report = (CellReport)ViewState["report"];


        for (int i = 0; i <= report.Paras.GetUpperBound(0); i++)
        {
            if (report.Paras[i, 3] == id.ToString())       //此此参数被后面的关联
            {
                cn = Page.FindControl(report.Paras[i, 0]); //被关联的控件
                if (cn == null)
                {
                    continue;
                }
                ddlNext = (HtmlComboBox)cn;
                ddlNext.Items.Clear();

                for (int j = 0; j < report.TableParas.Count; j++)   //扫描tableParas数组,看看所被关联参数如何从数据库中取值
                {
                    TablePara tp  = (TablePara)report.TableParas[j];
                    TablePara tp2 = new TablePara();
                    if (tp.ParaCode == (":" + i.ToString()))
                    {
                        pos = j;
                        tp2 = (TablePara)report.TableParas[pos];
                    }
                    if (":" + report.Paras[i, 0] == tp.ParaCode)
                    {
                        ddlNext.Items.Clear();
                        ddlNext.Text = "";
                        sql          = "select distinct " + tp2.ColumnName + " from " + tp2.TableName + " where " + tp2.ColumnName + "='" + ddl.SelectedValue + "'";
                        DbDataReader drValue = DBOpt.dbHelper.GetDataReader(sql);
                        while (drValue.Read())
                        {
                            if (counts > 99)
                            {
                                break;               //只放100个值
                            }
                            ddlNext.Items.Add(drValue[0].ToString().Trim());
                        }
                        drValue.Close();
                    }
                }
            }
        }
    }
Пример #2
0
    /// <summary>
    /// 生成检索控件
    /// </summary>
    private void buildQeruyParaControl()
    {
        CellReport report = (CellReport)ViewState["report"];

        htDDL = new Hashtable();
        int counts = 0;

        System.Web.UI.WebControls.Table t = new System.Web.UI.WebControls.Table();
        t.Width       = new Unit("90%");
        t.BorderWidth = new Unit("0px");
        t.CellPadding = 0;
        t.CellSpacing = 1;
        t.BackColor   = System.Drawing.Color.DarkGray;


        for (int i = 0; i <= report.Paras.GetUpperBound(0); i++)
        {
            TableRow  tr      = new TableRow();
            TableCell tcDescr = new TableCell();
            tcDescr.BorderWidth     = new Unit("1px");
            tcDescr.BackColor       = Color.DarkGray;
            tcDescr.HorizontalAlign = HorizontalAlign.Center;
            tcDescr.VerticalAlign   = VerticalAlign.Middle;
            tcDescr.Text            = report.Paras[i, 1];
            tcDescr.ToolTip         = report.Paras[i, 0];
            tr.Cells.Add(tcDescr);

            TableCell tcControl = new TableCell();
            tcControl.BorderWidth = new Unit("1px");
            tcControl.BackColor   = Color.White;

            HtmlComboBox ddl = new HtmlComboBox();

            ddl.ID      = report.Paras[i, 0];
            ddl.ToolTip = report.Paras[i, 0];
            ddl.Width   = new Unit("200px");

            for (int j = 0; j < report.TableParas.Count; j++)
            {
                TablePara tp = (TablePara)report.TableParas[j];
                if (":" + report.Paras[i, 0] == tp.ParaCode)
                {
                    _sql = "select distinct " + tp.ColumnName + " from " + tp.TableName + " order by " + tp.ColumnName + " desc";
                    DbDataReader drValue = DBOpt.dbHelper.GetDataReader(_sql);
                    while (drValue.Read())
                    {
                        if (counts > 99)
                        {
                            break;                                                      //只放100个值
                        }
                        if (ddl.Items.FindByText(drValue[0].ToString().Trim()) == null) //没有找到则加
                        {
                            ddl.Items.Add(drValue[0].ToString().Trim());
                        }
                    }
                    drValue.Close();
                }
            }

            //依赖列
            for (int k = i + 1; k <= report.Paras.GetUpperBound(0); k++)
            {
                if (report.Paras[k, 3] == report.Paras[i, 0])   //从i参数后面开始找其它参数是否关联它了
                {
                    ddl.AutoPostBack          = true;
                    ddl.SelectedIndexChanged += new EventHandler(ddl_SelectedIndexChanged);
                    break;
                }
            }

            tcControl.Controls.Add(ddl);
            tr.Cells.Add(tcControl);
            htDDL.Add(ddl.ToolTip, ddl);
            t.Rows.Add(tr);
        }
        tdControl.Controls.Add(t);
    }