Сборище примеров

 Комментарии можно оставлять "здесь"

Алфавитные ссылки на JavaScript 

<script type="text/javascript">
    $(document).ready(function () {
        var alphabet = "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЫЭЮЯ";
        var controls = "";
        var URL = window.location.href;
        if (URL.indexOf('?') > 0)
            URL = URL.substring(0, URL.indexOf('?'));
        for (var i = 0; i < alphabet.length; i++) {
            controls = controls + '<a href="' + URL + '?letter=' + alphabet.charAt(i) + '">' + alphabet.charAt(i) + '</a> ';
        }
        document.getElementById('alphabet').innerHTML = '<a href="'+ URL + '">Все</a> ' + controls;
    });
</script>

Интерактивная фильтрация

<script type="text/javascript" src="/_layouts/jquery-1.7.1.min.js" ></script>
<script type="text/javascript" language="javascript" >
    function init(q) {
        if ($("#<%=isLoading.ClientID %>").val() == 0) {
            $("#<%=isLoading.ClientID %>").val(1);
            $("#waitPic").attr("style""visibility: visible");
            var ctx;
            if ('<%# webFullURL %>' != '/') {
                ctx = new SP.ClientContext('<%# webFullURL %>');
            }
            else {
                ctx = new SP.ClientContext.get_current();
            }
            //var site = ctx.get_web().web.get_webs();  // ctx.AuthenticationMode = SP.ClientAuthenticationMode.Default;
            var list = ctx.get_web().get_lists().getById('<%# listGUID %>');  // var list = ctx.get_web().get_lists().getByTitle('<%# listTitle %>');

            var query = new SP.CamlQuery();
            if (q == '')
                query.set_viewXml('<View Scope="Recursive"><Query><OrderBy><FieldRef Name="<%# fieldTitle %>"/></OrderBy><Where></Where></Query><RowLimit>15</RowLimit></View>');
            else
                query.set_viewXml('<View Scope="Recursive"><Query><OrderBy><FieldRef Name="<%# fieldTitle %>"/></OrderBy><Where><Contains><FieldRef Name="<%# fieldTitle %>"/><Value Type="Text">' + q + '</Value></Contains></Where></Query><RowLimit>15</RowLimit></View>');
            this.items = list.getItems(query);
            ctx.load(items, 'Include(ID, <%# fieldTitle %>)');
            ctx.executeQueryAsync(Function.createDelegate(thisthis.onOK), Function.createDelegate(thisthis.onError));
        }

    }

    function onError(sender, args) {
        $("#<%=isLoading.ClientID %>").val(0);
        alert('Ошибка: ' + args.get_message());
    }

    function onOK(sender, args) {
        var resultFormat = '<div style=\"float:left;margin:5px;padding:5px;background-color:#FDF5E6;width:330px;"><a target="_self" onclick="window.frameElement.commonModalDialogClose(1, \'{0}~{1}\');"><b>{2}</b></a></div><br/>';
        var resultStr = String.format(resultFormat, '0''''Нет значения');
        var enumerator = items.getEnumerator();
        while (enumerator.moveNext()) {
            var listItem = enumerator.get_current();
            var title = listItem.get_item('<%# fieldTitle %>').replace('"''&quot;').replace('\'''&quot;');
            resultStr = resultStr + String.format(resultFormat, listItem.get_item('ID'), title, title);
        }
        $('#resultSearch').html(resultStr);
        $("#<%=isLoading.ClientID %>").val(0);
        $("#waitPic").attr("style""visibility: hidden");
    }

    $(document).ready(function () {
        init('');
    });
</script>

<asp:HiddenField ID="isLoading" runat="server" Value="0"/>

<fieldset>
    <legend><span style="color:#4B0082">Фильтры</span></legend>
    <asp:Label runat="server" ID="lbFilterName" Text="Значение поля содержит"/>
    <asp:TextBox runat="server" ID="tbFilterValue" Visible="false"/>
    <input type="text" onkeyup="init(this.value);" style="background-image: url(/_layouts/images/spssearch2.gif); BORDER-BOTTOM: blue 1px solid; border-left: blue 1px solid; padding-bottom: 2px; padding-left: 20px; padding-right: 2px; background-repeat: no-repeat; border-top: blue 1px solid; border-right: blue 1px solid; padding-top: 2px;" />
    <img src="/_layouts/Images/ajax-loader.gif" alt="Обработка" id="waitPic" name="waitPic" style="visibility:hidden;width:32px;height:32px;"/>

   <%-- <asp:Button runat="server" ID="btSearch" OnClick="Search_Click" Text="Найти"/>--%>
</fieldset>
<fieldset>
    <legend><span style="color:#4B0082">Результат фильтрации (первые 15 элементов)</span></legend>
    <div style="font-family:Times New Roman; font-size:10pt;font-weight:bold;color:Blue;width:100%;">Щёлкните по необходимому элементу</div>
    <div style="font-family:Times New Roman; font-size:9pt;width:100%;">
        <asp:Panel runat="server" ID="resPanel" />
        <div id="resultSearch">
    </div>
</fieldset>

Изображение из БД (Binary)

Пример, взятый из шаблона репитора (Repeator)

1. Разметка 
<asp:Image ID="Image1" Width="30" Height="30" runat="server" ImageUrl='<%# string.Format("data:image/jpg;base64,{0}", DataBinder.Eval(Container.DataItem, "Foto")) %>' />

2. Данные передаваемые в DataSource (f.Foto - получено с помощью LinqToSQL)
Foto = Convert.ToBase64String(f.Foto.ToArray())

Использование делегатов


delegate double calc(string x, string y);
calc myCalc = (x, y) => Convert.ToDouble(x) / Convert.ToDouble(y);
myCalc(p1, p2)





Простой слайдер картинок и текста на JQuery


<SharePoint:ScriptLink ID="ScriptLink1" runat="server" Name="/_layouts/ajax/jquery-1.9.1.js" Localizable="false"/>
<SharePoint:ScriptLink ID="ScriptLink2" runat="server" Name="/_layouts/ajax/jquery-ui-1.10.3.js" Localizable="false"/>

<script type="text/javascript">
    $(document).ready(function () {
setInterval(function () {
            if($("#autoRotate").is(':checked'))
                nextItem();
        }, 3000);
    });
    curItemId = 0;
    countItem = 3
    function nextItem() {
            curItemId = (++curItemId < countItem ? curItemId : 0);
            prevItemId = (curItemId == 0 ? countItem-1 : curItemId - 1);
            $("#pic"+curItemId).attr("style", "display: visible");
            $("#pic"+prevItemId).attr("style", "display: none");
    }

    function prevItem() {
            curItemId = (--curItemId >=0 ? curItemId : countItem-1);
            prevItemId = (curItemId == countItem-1 ? 0 : curItemId+1);
            $("#pic"+curItemId).attr("style", "display: visible");
            $("#pic"+prevItemId).attr("style", "display: none");
    }
</script>


<div id="picRotator">
    <table>
        <tr>
            <td>
                <div id="items">
                    <div id="pic0" style="display:block;float:left;">
                        text 1 <br /> <img src="http://basic-slider.com/img/banner03.jpg" >
                    </div>
                    <div id="pic1" style="display:none;float:left;">
                        text 2 <br /> <img src="http://basic-slider.com/img/banner02.jpg" >
                    </div>
                    <div id="pic2" style="display:none;float:left;">
                        text 3 <br /> <img src="http://basic-slider.com/img/banner01.jpg" >
                    </div>
                </div>
            </td>
        </tr>
        <tr>
            <td>
                <input type="checkbox" name="autoRotate" id="autoRotate" value="" >Слайд шоу<br>
            </td>
        </tr>
        <tr>
            <td>
                <div id="navigation">
                    <a style="margin:5px;float:left;" onclick="prevItem()">Предыдущая</a><a style="margin:5px;float:right;" onclick="nextItem()">Следующая</a>
                </div>
            </td>
        </tr>
    </table>
   
</div>



Запрос к БД MS Project Server. Фактические трудозатраты


CREATE FUNCTION [dbo].[GET_TASK_HISTORY] ()
RETURNS @RTS_TASK_HISTORY TABLE (TASK_HISTORY_UID uniqueidentifier, PROJ_UID uniqueidentifier, ASSN_UID uniqueidentifier, TASK_UID uniqueidentifier, RES_UID uniqueidentifier, Act_Work float, Submit_Date datetime)
AS
BEGIN
DECLARE
@TASK_HISTORY_UID uniqueidentifier,
@ASSN_UID uniqueidentifier,
@RES_UID uniqueidentifier,
@TASK_UID uniqueidentifier,
@PROJ_UID uniqueidentifier,
@Assn_Change_Data varbinary(max),

@i int,
@Predel int,
@Delta int,
@Task_Start_Date int,
@Task_Finish_Date int,
@h float

DECLARE ALL_TRANSACTIONS CURSOR FOR
SELECT a.ASSN_UID, a.PROJ_UID, t.TASK_PUBLISHED_UID TASK_UID, r.RES_UID, t.Assn_Change_Data,
datediff(dd, '19831231', ISNULL(asave.Assn_Start_Date,a.Assn_Start_Date)) Assn_Start_Date,
datediff(dd, '19831231', ISNULL(asave.Assn_Finish_Date,a.Assn_Finish_Date)) Assn_Finish_Date

FROM MSP_ASSIGNMENT_TRANSACTIONS t INNER JOIN
MSP_ASSIGNMENTS a ON a.ASSN_UID = t.ASSN_UID LEFT OUTER JOIN
MSP_ASSIGNMENTS_SAVED asave ON asave.ASSN_UID = t.ASSN_UID LEFT OUTER JOIN
MSP_RESOURCES r ON r.RES_UID = a.RES_UID
WHERE ASSN_TRANS_STATE_ENUM = 3
--AND  t.PROJ_UID='53181886-A21C-11E0-90F1-003048C568C9'
-- and
 --  [TASK_PUBLISHED_UID] in(
 --  '1B3CE806-048D-4461-A67A-DA429C898BE6' ,
   --'816E01C3-B6A8-11E0-B265-003048C568C9', '5318188A-A21C-11E0-90F1-003048C568C9',
  -- 'F85D783E-31DD-454A-ACF9-0DC929CC3131',
  -- 'D468F6AA-21E8-4EEC-A782-1A6B84CBFEEF')
ORDER BY 1

OPEN ALL_TRANSACTIONS

FETCH NEXT FROM ALL_TRANSACTIONS
INTO @ASSN_UID, @PROJ_UID, @TASK_UID, @RES_UID, @Assn_Change_Data, @Task_Start_Date, @Task_Finish_Date

WHILE @@FETCH_STATUS = 0
BEGIN
SET @i = 44
SET @Predel = datalength(@Assn_Change_Data) - 4 -- отнимаем 4 байта, т.к. тип длина типа int = 4

/* Разбор двоичных данных */
WHILE @i < @Predel
BEGIN
SET @Delta = cast(substring(@Assn_Change_Data, @i+1, 1) + substring(@Assn_Change_Data, @i ,1) as int)
IF @Delta between @Task_Start_Date and @Task_Finish_Date
BEGIN
SET @h = dbo.fnBinaryFloat2Float(substring(@Assn_Change_Data, @i+17,1) + substring(@Assn_Change_Data, @i+16, 1)
+ substring(@Assn_Change_Data, @i+15,1) + substring(@Assn_Change_Data, @i+14,1)
+ substring(@Assn_Change_Data, @i+13,1)  + substring(@Assn_Change_Data, @i+12,1)
+ substring(@Assn_Change_Data, @i+11,1)  + substring(@Assn_Change_Data, @i+10,1)) / 60000

SELECT @TASK_HISTORY_UID = new_id from RTS_GetNewID
-- чтобы не попали совсем совсем маленькие числа типа 1,85424246567143E-313
-- @h = 0 нужно, ибо сотрудник мог удалить ранее введенные часы и в этой дате д.б. ноль
IF (@h > 0.0001) OR (@h = 0)
INSERT @RTS_TASK_HISTORY SELECT @TASK_HISTORY_UID, @PROJ_UID, @ASSN_UID, @TASK_UID, @RES_UID, @h, DATEADD(dd,cast(substring(@Assn_Change_Data, @i+1, 1) + substring(@Assn_Change_Data, @i ,1) as int),'19831231')
   SET @i = @i+30 /* по идее ускорение */
END
SET @i = @i+1
 END

FETCH NEXT FROM ALL_TRANSACTIONS
INTO @ASSN_UID, @PROJ_UID, @TASK_UID, @RES_UID, @Assn_Change_Data, @Task_Start_Date, @Task_Finish_Date
END
CLOSE ALL_TRANSACTIONS;
--DELETE FROM RTS_TASK_HISTORY;
--INSERT INTO RTS_TASK_HISTORY SELECT * FROM @RTS_TASK_HISTORY;
 return
End -- Create function SPK_Разбор_единичного_Assn_Change_Data (@Assn_Trans_UID uniqueidentifier)


GO



CREATE FUNCTION [dbo].[fnBinaryFloat2Float] (@BinaryFloat BINARY(8)) 
RETURNS FLOAT 
AS 
BEGIN 
   RETURN   SIGN(CAST(@BinaryFloat AS BIGINT)) 
      * (1.0 + (CAST(@BinaryFloat AS BIGINT) & 0x000FFFFFFFFFFFFF) * POWER(CAST(2 AS FLOAT), -52)) 
      * POWER(CAST(2 AS FLOAT), (CAST(@BinaryFloat AS BIGINT) & 0x7ff0000000000000) / 0x0010000000000000 - 1023) 
END -- CREATE FUNCTION [dbo].[fnBinaryFloat2Float] (@BinaryFloat BINARY(8)) 

GO


 Комментарии можно оставлять "здесь"

Комментариев нет:

Яндекс.Метрика