in

SDT Community Server

SDT Forums, Blogs, Photos server.

wego

November 2009 - Posts

  • 使用 jQuery 处理 SimpleGridView 的一个选择行背景色问题

    使用 SimpleGridView 时, 如果需要在某些行添加特定背景样式, 则会出现点击这些行时,  它的背景色没有变成点击获焦行的背景色. 此时, 可使用如下 jQuery 脚本解决. 另外,  jQuery 非常好用, 方便灵活, 脚本代码大量减少, 网页大小也随之而小; 且良好的兼容性, 不用担心到了别的浏览器或其它版本效果就不一样. 所以非常推荐推荐!

     

    public void gvData_RowDataBound(object sender, GridViewRowEventArgs e)
    {
            switch (e.Row.RowType)
            {
                case DataControlRowType.DataRow:
                    if (...)
                    {
                        for (int i = 0; i < e.Row.Cells.Count - 1; i++)
                        {
                            e.Row.Cells[i].Attributes.Add("style", "font-weight:bold;background-color:#CCFFCC;");
                        }
                    }
                    break;
            }
    }

     

     

    protected void Page_Load(object sender, EventArgs e)
    {

                StringBuilder script = new StringBuilder();

     

                // global variable
                script.Append("var lastSelRow;");
                script.Append("var lastSelRowBgColor;");

     

                // reconvert backgroundColor for last selected row

                // :gt(index) :  匹配所有大于给定索引值的元素;  因为这里第1个 tr 是列标题行
                script.Append("$('#{0} tr:gt(0)').mousedown(function() {{ " +

     

                                    "if (lastSelRow) {{ " +
                                        "$(lastSelRow).children('td').each(function() {{ " +
                                            "$(this).css('backgroundColor', lastSelRowBgColor);" +
                                        "}}); " +
                                    "}} " +

     

                                    "lastSelRow = $(this)[0]; " +
                                    "lastSelRowBgColor = $(this).children('td:first').css('backgroundColor'); " +    
                         
                                "}});");

     

                // set backgroundColor for current selected row
                script.Append("$('#{0} tr:gt(0)').click(function() {{ " +                                      
                                    "$(this).children('td').each(function() {{ " +
                                        "$(this).css('backgroundColor', '#e1edf8'); " +
                                    "}}); " +
                                "}});");

                //
                ClientScript.RegisterStartupScript(this.GetType(), "SetSelRowBackgroundColor", string.Format(script.ToString(), gvData.ClientID), true);

    }

  • Oracle 竖变横需注意 ROWNUM & Order By

    WITH t AS
         (
            SELECT 'BU0301' bu
              FROM DUAL
            UNION ALL
            SELECT 'BU0701'
              FROM DUAL
            UNION ALL
            SELECT 'BU0401'
              FROM DUAL
            UNION ALL
            SELECT 'BU0501'
              FROM DUAL
            UNION ALL
            SELECT 'BU0401'
              FROM DUAL
            UNION ALL
            SELECT 'BU0801'
              FROM DUAL
            UNION ALL
            SELECT 'BU0901'
              FROM DUAL
            UNION ALL
            SELECT 'BU0201'
              FROM DUAL
            UNION ALL
            SELECT 'BU0101'
              FROM DUAL
            UNION ALL
            SELECT 'BU0601'
              FROM DUAL)


    SELECT     SUBSTR (MAX (SYS_CONNECT_BY_PATH ('''' || bu || '''', ', ')), 3)
          FROM (SELECT ROWNUM rn, bu
                  FROM (SELECT DISTINCT bu
                                   FROM t))
    START WITH rn = 1
    CONNECT BY rn - 1 = PRIOR rn; 

     

    -- 输出: 'BU0301', 'BU0201', 'BU0301', 'BU0401', 'BU0501', 'BU0601', 'BU0701', 'BU0801', 'BU0901'

    甚奇! 'BU0101' 不见了! 另外, 明明没 BU 重复且已加 DISTINCT, 但结果竟有 'BU0301' 重复!

     

     

    SELECT     SUBSTR (MAX (SYS_CONNECT_BY_PATH ('''' || bu || '''', ', ')), 3)
          FROM (SELECT ROWNUM rn, bu
                  FROM (SELECT DISTINCT bu
                                   FROM t
                               ORDER BY bu))
    START WITH rn = 1
    CONNECT BY rn - 1 = PRIOR rn;

     

    或者:

     

    SELECT     SUBSTR (MAX (SYS_CONNECT_BY_PATH ('''' || bu || '''', ', ')), 3)
          FROM (SELECT DISTINCT DENSE_RANK () OVER (ORDER BY bu) AS rn, bu
                           FROM t)
    START WITH rn = 1
    CONNECT BY rn - 1 = PRIOR rn;

     

    -- 输出: 'BU0101', 'BU0201', 'BU0301', 'BU0401', 'BU0501', 'BU0601', 'BU0701', 'BU0801', 'BU0901'

Copyright SDT, 2006-2009. All rights reserved.