Danh mục lưu trữ: jQuery và SharePoint

Khắc phục các vấn đề khó chịu với URL tương đối trong SharePoint Quick Launch

Tôi muốn thêm một liên kết để chuyển hướng nhanh chóng khởi chạy ngày khác và SharePoint nói với tôi:

image

Phiên bản thuần văn bản đó là:

Đảm bảo rằng URL hợp lệ và bắt đầu với một nhân vật hợp lệ (một dấu hiệu số (#) hoặc dấu gạch chéo phía trước (/)) hoặc một giao thức được hỗ trợ hợp lệ (Ví dụ, ' http://’, ' https://’, ' tập tin://’, ' ftp://’, ' mailto:’, ' tin tức:’).

"Blech và thủy!"Tôi đã nói.

Giải pháp này là sử dụng JavaScript để tìm thấy một liên kết được biết đến trong khởi động nhanh chóng và thay thế chế độ của nó.

Để thử nghiệm này, Thêm một liên kết mới vào trang web thử nghiệm của bạn thusly:

image

Tôi đã sử dụng jQuery. Để giải quyết nó, nhận được một số JavaScript và jQuery lên trang bằng cách sử dụng kỹ thuật ưa thích của bạn và với một dòng mã như thế này:

 

$(tài liệu).sẵn sàng( chức năng () {

    $("một:chứa('Kiểm tra URL thay thế')").Nhấp vào(chức năng () { cảnh báo("nhấp vào thay đổi hành vi!"); trở lại sai;});

});

Và Bob của chú.

Bộ chọn jQuery tìm thấy mỗi <một> từ khóa có "Kiểm tra URL thay thế" trong tên của nó. Bạn có thể muốn tìm-giai điệu mà tùy thuộc vào liên kết của bạn và như vậy.

.click(chức năng() ghi đè lên bất cứ điều gì SharePoint đã có thể thực hiện khi người dùng nhấp vào. Đảm bảo rằng bạn trở lại"sai" hoặc người nào khác nó sẽ làm công cụ của bạn và sau đó cố gắng điều href quá, đó là gần như chắc chắn không phải là mục tiêu của bạn.

Điều này được thực hiện và thử nghiệm trong một môi trường trực tuyến SharePoint nhưng nên làm việc tốt trong 2010 và trước đó quá.

</kết thúc>

undefinedĐăng ký vào blog của tôi.

Theo tôi trên Twitter lúc http://www.twitter.com/pagalvin

Nhanh chóng và đơn giản: Giải quyết "tham số URL không hợp lệ” vấn đề với UpdateListItems trong lists.asmx

Khi làm việc với UpdateListItems qua lists.asmx, nó rất dễ dàng để tạo ra lỗi:

Tham số URL không hợp lệ.

URL được cung cấp có chứa một lệnh không hợp lệ hoặc giá trị. Xin vui lòng kiểm tra lại URL.

Bạn có thể nhận được lỗi này khi bạn quên bao gồm ID trong các danh sách các lĩnh vực để cập nhật.  Điều này, giống như rất nhiều các SP dịch vụ web, là một chút counterintuitive kể từ khi bạn cần bao gồm ID trong các thuộc tính ID của các <Phương pháp> nguyên tố.  Và Anh không Cập Nhật ID và có lẽ không bao giờ muốn để ở nơi đầu tiên.

Phong bì xà phòng này làm việc:

<soapenv:Phong bì xmlns:soapenv =' http://schemas.xmlsoap.org/Soap/Envelope/'>
  <soapenv:Cơ thể>                      
    <UpdateListItems xmlns =' http://schemas.Microsoft.com/SharePoint/SOAP/'>                     
      <listName>{C712E2EA-54E1-47AD-9D99-1848C7773E2F}</listName>                     
        <bản Cập Nhật>                     
         <Hàng loạt các OnError ="Tiếp tục">
          <Phương pháp ID ="1" CMD ="Cập Nhật">
            <Lĩnh vực tên ="CooperativeLock">bị khóa!</Lĩnh vực>
            <Lĩnh vực tên ="ID">1</Lĩnh vực>
          </Phương pháp>
        </Lô>                     
        </bản Cập Nhật>                
      </UpdateListItems>             
  </soapenv:Cơ thể>         
</soapenv:Phong bì>

Nếu bạn loại bỏ tài liệu tham khảo trường ID sau đó bạn sẽ nhận được thông báo "URL không hợp lệ tham số" gây phiền nhiễu.

</kết thúc>

undefinedĐăng ký vào blog của tôi.

Theo tôi trên Twitter lúc http://www.twitter.com/pagalvin

 

Người nghèo của bộ nhớ đệm trong JavaScript

[TL;Phiên bản DR: sử dụng cookie để lưu trữ các kết quả của cuộc gọi async; Hiển thị các kết quả của quá khứ async cuộc gọi ngay lập tức và sau đó xác nhận họ sau khi tải trang.]

Tôi đã làm việc trên SharePoint intranet site cho một khách hàng tính năng đó, trong số những thứ khác, một hướng trung học cách điệu mà tùy chọn trình đơn được quản lý thông qua một danh sách tùy chỉnh cũ thường xuyên.  Ý tưởng là rằng khách hàng được để kiểm soát trình đơn "của họ" trang web mà không ảnh hưởng đến hoặc bị ảnh hưởng bởi việc chuyển hướng toàn cầu đặt của nó.

(đó là một cái gì đó vô cùng lật đổ về việc thêm một CEWP điểm vào một tập tin HTML mà tải một số CSS và JS để về cơ bản làm thay đổi gần như tất cả mọi thứ về hành vi của một trang web... nhưng đó là cho đăng bài khác)

Mã này khá đơn giản:

Ở đây tại chỗ đau là mà mỗi khi bất cứ ai chạm một trong các trang của trang web, trình duyệt web của người dùng đó đến để có được khoản mục khỏi danh sách.  Một khi dev được hoàn tất và thử nghiệm đã chứng minh những điều cần được ổn định và đầy đủ, cuộc gọi này là không cần thiết hơn 99% thời gian từ trình đơn hiếm khi thay đổi.  Nó cũng có một ảnh hưởng đến giao diện người dùng lạ mà là phổ biến trong thế giới mới dũng cảm này của các trang web siêu ajaxy-Hiển thị hình ảnh trang và trình đơn đưa ra chỉ sau đó.  Nó là hốt hoảng kinh hai và mất tập trung trong quan điểm của tôi.  Và hốt hoảng kinh hai. Vì vậy, bộ nhớ đệm. 

Tôi đổi logic thusly:

  • Tìm kiếm một cookie trong trình duyệt có chứa trình đơn như tôi cuối đọc nó
    • Nếu tìm thấy, khiến nó ngay lập tức.  Đừng chờ đợi cho trang để hoàn tất tải.  (Bạn cần phải đảm bảo rằng HTML của bạn chiến lược được đặt ở đây, nhưng nó không phải là khó khăn để làm).
  • Chờ đợi cho trang để hoàn tất tải và làm cho một async gọi để tải lên mục trình đơn từ một danh sách bằng cách sử dụng phần còn lại hoặc lists.asmx hoặc bất cứ điều gì
  • So sánh những gì tôi nhận chống lại cookie
    • Nếu nó phù hợp với, Dừng
    • Nếu không, bằng cách sử dụng jQuery, tự động điền một bó nếu <Li>của trong một <ul>
  • Sử dụng CSS để làm tất cả các định dạng
  • Lợi nhuận!

Một số bạn sẽ nói, "hey! có là không có xảy ra bộ nhớ đệm thực sự ở đây kể từ khi bạn đang đọc menu dù sao mỗi lần duy nhất.”  Và bạn nói đúng-tôi không cho các máy chủ bất kỳ hình thức nào của phá vỡ.  Nhưng vì cuộc gọi async và sẽ xảy ra sau khi trang đầu tiên tải trọng chiến đấu HTML đầy đủ ám, "thật" đáp ứng tốt hơn cho người dùng.  Menu ám khá nhiều càng tốt trang thu hút.  Nếu trình đơn sẽ xảy ra với sự thay đổi, người sử dụng phải chịu sự một hốt hoảng kinh hai tái vẽ của menu, nhưng chỉ một lần.

Có một số cách để làm cho bộ nhớ đệm này hiệu quả hơn và giúp đỡ các máy chủ cùng một lúc:

  • Đặt trong một quy tắc rằng bộ nhớ cache cookie"" có hiệu lực tối thiểu 24 giờ hoặc một số khung thời gian khác. Miễn là có không có cookie hết hạn, sử dụng các cookie của menu ảnh chụp và không bao giờ trúng các máy chủ.

Vâng... đó là tất cả những gì tôi suy nghĩ ngay bây giờ :). 

Nếu bất cứ ai có bất cứ ý tưởng thông minh ở đây tôi rất muốn biết họ.

Và cuối cùng-kỹ thuật này có thể được sử dụng cho các công cụ khác.  Điều này khách hàng trang có một số điều hướng dữ liệu trên nhiều trang, nhiều người trong số họ thay đổi tương đối hiếm khi (giống như một lần một tuần hoặc mỗi tháng một lần).  Nếu bạn nhắm mục tiêu các khu vực cụ thể của chức năng, bạn có thể cho một giao diện người dùng phản ứng nhanh hơn bằng cách kéo nội dung từ các cửa hàng địa phương cookie và rendering ngay lập tức.  Nó cảm thấy nhanh hơn để người sử dụng ngay cả khi bạn đang không cứu máy chủ bất kỳ chu kỳ.  Bạn có thể tiết kiệm các chu kỳ máy chủ bằng cách quyết định một số điều kiện và gây nên để làm mất hiệu lực bộ nhớ cache cookie địa phương này.  Đó là tất cả tình huống và artsy stuff và thực sự phần lớn vui :). 

</kết thúc>

undefinedĐăng ký vào blog của tôi.

Theo tôi trên Twitter lúc http://www.twitter.com/pagalvin

XSLT và jQuery mẫu

Tôi đã làm rất nhiều của XSLT và jQuery và nghĩ rằng tôi muốn chia sẻ một vài đoạn mà những người khác có thể tìm thấy hữu ích trong tương lai.

Ví dụ 1: Phát ra đơn giản JavaScript / jQuery trong XSLT:

<XSL:trận đấu tiêu bản = "cái gì" XML:vũ trụ = "bảo vệ">

  <!– Trống trong lĩnh vực này ẩn truy vấn thân thiện bộ lọc –>
  <kiểu kịch bản = "text/javascript">
    $(tài liệu).sẵn sàng(chức năng(){
      $("#QueryFriendlyFilters").Val("rỗng");
    });
  </kịch bản>

</XSL:tiêu bản>

Mà bit phát ra một số JavaScript mà chờ đợi cho trang để hoàn tất tải (vì các $(tài liệu).sẵn sàng(…)) và sau đó bộ giá trị của một lĩnh vực ẩn tên QueryFriendlyFilters với giá trị chữ "rỗng".

Ví dụ 2: Sử dụng <XSL:Nếu> để kiểm tra "lớn hơn",  "ít hơn", vv.

<XSL:trận đấu tiêu bản = "cái gì" XML:vũ trụ = "bảo vệ">

  <div id = "fdcAllFilters">
 
    <XSL:Nếu test="@Count>0">
      <div class = "fdcFilterLabel">Hiện tại bộ lọc:</khoảng>
    </XSL:Nếu>

    <!– nhiều thứ xảy ra ở đây. –>

</XSL:tiêu bản>

Đoạn mã trên sẽ kiểm tra xem liệu một thuộc tính được đặt tên "Tin cậy" của nguyên tố "một cái gì đó" lớn hơn 0.  XML sau này sẽ là một cái gì đó như:”

<một cái gì đó Count = "5" />

Ví dụ 3: Iterate qua tất cả các yếu tố, xen jQuery cuộc gọi.

<!– Iterate qua tất cả các bộ lọc và hiển thị đúng  liên kết. –>
<XSL:cho mỗi chọn = "UserFilter">

  <một tầng lớp = "FilterHref" href = "javascript:mySubmitPage('RemoveUserFilter','{@ ID}’)">[X]</một>

  <div class = "fdcFilterLabel"><XSL:giá trị của select="@FilterValue"/></khoảng>

  <kiểu kịch bản = "text/javascript">

    $(tài liệu).sẵn sàng(chức năng(){
        <XSL:văn bản><![CDATA[$("#QueryFriendlyFilters").Val( ($("#QueryFriendlyFilters").Val() + " ]]></XSL:văn bản>\"<XSL:giá trị của select="@FilterValue"/>\"<XSL:văn bản><![CDATA["));]]></XSL:văn bản>
    });

  </kịch bản>

</XSL:cho mỗi>

Đoạn mã trên là phức tạp nhất và có thể có cách dễ dàng hơn để làm điều đó.

XML sau này trông gần như thế này:

<UserFilter ID = "123" FilterValue = "xyzzy" />

Đoạn này iterating thông qua <UserFilter> các nút. 

Nó lần đầu tiên phát ra một neo từ khóa đó khi nhấp invokes hàm JavaScript là đã có trên trang, "mySubmitPage" và đã vượt qua giá trị của một thuộc tính trên các <UserFilter> nút đặt tên "ID". 

Nó sau đó phát ra một số jQuery mà chờ đợi cho trang để tải.  JQuery đó Cập Nhật một lĩnh vực ẩn tên là "QueryFriendlyFilters" bằng cách thêm giá trị của thuộc tính FilterValue.  Lưu ý tất cả các điên <XSL:văn bản> và <![CDATA[ … ]]> công cụ.

Đó là nó, hy vọng nó sẽ giúp!

</kết thúc>

Đăng ký vào blog của tôi.

Theo tôi trên Twitter lúc http://www.twitter.com/pagalvin

Lists.asmx, GetListItems và thư mục

Tôi đã làm một số nghiên cứu cho một ai đó ngày hôm nay trên các dịch vụ web list.asmx cung cấp như một phần của SharePoint 2010 (và trước đó).  Cô đã có thể nhận được các bản ghi danh sách ở thư mục gốc (bao gồm tên của thư mục con), nhưng không thể có được các mục trong thư mục con.  Tôi đã làm một số tìm kiếm xung quanh trên internets và đó là một câu hỏi phổ biến đáng ngạc nhiên.  Được, Tôi không thể nhận được một câu trả lời tốt các câu hỏi đơn giản, "nếu tôi biết thư mục, làm thế nào để có được các mục trong thư mục?”  Để được trung thực, Tôi đã không thử tất cả những khó khăn kể từ khi tôi đã muốn con số này một ra ngày của riêng tôi trong một thời Nụ cười.

Để thiết lập, Tôi tạo ra một trang web được đặt tên "Viết blog kịch bản" và một danh sách tùy chỉnh tên "Tùy chỉnh danh sách với tiểu Folders".  Tôi sau đó tạo ra thư mục tên:

  • Năm 2005
  • Năm 2006
  • Năm 2007

Tôi thêm một vài bài vào thư mục "Năm 2006".  Đây là những gì nó trông giống như:

image

Bạn bè của tôi không phải là văn bản C# Mã nhưng thay vì sử dụng Java, Vì vậy, phong bì xà phòng là những gì cô ấy thực sự cần.  Để nhận được rằng, Tôi đã viết một chút về jQuery và sau đó sử dụng fiddler để có được cuộc trò chuyện thực tế HTTP.

Ở đây là có liên quan jQuery (Tôi sao chép mã xuống dưới đây nếu bạn muốn sao chép/dán):

image

Họ quan trọng đầu tiên là để bao gồm cả một <queryOptions> và <QueryOptions> nút.  Điều quan trọng thứ hai là các <Thư mục> nút là một URL mà khách hàng có quyền truy cập.

Có thể có những cách khác để có được điều này, nhưng điều này đã làm việc tốt cho tôi khi sử dụng jQuery.

Đây là phong bì xà phòng cho các bên trên:

<soapenv:Phong bì xmlns:soapenv =’http://schemas.xmlsoap.org/Soap/Envelope/’>                
  <soapenv:Cơ thể>
    <GetListItems xmlns =’
http://schemas.Microsoft.com/SharePoint/Soap/’>
      <listName>Tùy chỉnh danh sách với tiểu thư mục</listName>
      <viewFields>  
        <ViewFields>
          <FieldRef tên =' tiêu đề’ />
          <FieldRef tên ='EncodedAbsUrl’ />
        </ViewFields>
      </viewFields>
      <queryOptions>
        <QueryOptions>
          <Thư mục>
http://demoserver1/blog Kịch bản/danh sách tùy chỉnh danh sách với tiểu thư mục/năm 2006</Thư mục>
        </QueryOptions>
      </queryOptions>
   
</GetListItems>
  </soapenv:Cơ thể>
</soapenv:Phong bì>

Rất nhiều ví dụ và thảo luận xung quanh này dẫn tôi để tin rằng tất cả tôi cần là <QueryOptions> và chỉ ra tên thư mục.  Đối với tôi, Tôi cần cả hai quấn nó bên trong <queryOptions> cũng như chỉ định một URL đầy đủ điều kiện cho các <Thư mục> nút.

Đây là thiết lập AJAX của jQuery:

$(tài liệu).sẵn sàng(chức năng() {
       var soapEnv =
           "<soapenv:Phong bì xmlns:soapenv =’http://schemas.xmlsoap.org/Soap/Envelope/’> \
               <soapenv:Cơ thể> \
                    <GetListItems xmlns =’http://schemas.Microsoft.com/SharePoint/Soap/’> \
                       <listName>Tùy chỉnh danh sách với tiểu thư mục</listName> \
                       <viewFields> \
                           <ViewFields> \
                              <FieldRef tên =' tiêu đề’ /> \
                              <FieldRef tên ='EncodedAbsUrl’ /> \
                          </ViewFields> \
                       </viewFields> \
                       <queryOptions> \
                         <QueryOptions> \
                           <Thư mục>http://demoserver1/Blogging Kịch bản/danh sách tùy chỉnh danh sách với tiểu thư mục/năm 2006</Thư mục> \
                         </QueryOptions> \
                       </queryOptions> \
                   </GetListItems> \
               </soapenv:Cơ thể> \
           </soapenv:Phong bì>";

</kết thúc>

Đăng ký vào blog của tôi.

Theo tôi trên Twitter lúc http://www.twitter.com/pagalvin

Lists.asmx, GetList và "giá trị không thể được null”

Tôi phát hiện ra ngày hôm nay rằng GetList() phương pháp trong lists.asmx Dịch vụ web đã được gọi là rất cẩn thận hoặc nó là dễ bị ném một bí ẩn "Giá trị hiện tại không thể được null" ngoại lệ (và đó giả sử bạn có thể vượt qua các thông báo lỗi chung tồi tệ hơn nữa, "Ngoại lệ của loại ' Microsoft.SharePoint.SoapServer.SoapServerException’ bị văng ra.")  Đặc biệt, Tôi thấy rằng bạn không thể cung cấp cho bất kỳ hình thức nào của tiền tố về phương pháp GetList.  Đoạn jQuery sau minh họa điểm:

image

Nếu bạn làm điều đó, Dịch vụ web đáp ứng với "Giá trị không thể được null" theo điều này Fiddler-cung cấp bảng điểm HTTP:

<?Phiên bản XML = "1.0" mã hóa = "utf-8"?>
  <xà phòng:Phong bì
     xmlns:xà phòng ="
http://schemas.xmlsoap.org/Soap/Envelope/"    
     xmlns:XSi = "
http://www.w3.org/2001/XMLSchema-instance
     xmlns:xsd ="
http://www.w3.org/ 2001/XMLSchema">

  <xà phòng:Cơ thể>
    <xà phòng:Lỗi>
      <faultcode>xà phòng:Máy chủ</faultcode>
      <faultstring>
        Các ngoại lệ của loại ' Microsoft.SharePoint.SoapServer.SoapServerException’ ném.
      </faultstring>
      <chi tiết>
        <errorstring xmlns ="
http://schemas.Microsoft.com/SharePoint/Soap/">
Giá trị không thể được null.
        </errorstring>
      </chi tiết>
    </xà phòng:Lỗi>
  </xà phòng:Cơ thể>
</xà phòng:Phong bì>

Tất nhiên, bạn có lẽ sẽ không thêm tiền tố "s0" đó ngày của riêng bạn, nhưng một số công cụ có xu hướng để làm điều đó (như Eclipse).

Điều này là khó hiểu tất cả chi tiết / bực bội vì các phương pháp khác chịu đựng tiền tố.  Ví dụ, các GetListCollection phương pháp không quan tâm nếu nó được mục, ngay cả với vô nghĩa tiền tố như "xyzzy":

image

Điều này "giá trị hiện tại không thể được null" có vẻ khá phổ biến với lists.asmx để hy vọng điều này sẽ giúp đỡ người ra trong tương lai.

</kết thúc>

Đăng ký vào blog của tôi.

Theo tôi trên Twitter lúc http://www.twitter.com/pagalvin

Vô tận làm tổ <div> Tags và jQuery

Điều này có vẻ như một chủ đề oddball, I 'm not sure it's thực sự giá trị viết blog về, nhưng đó đã không bao giờ ngừng lại tôi trước khi, Vì vậy ở đây chúng tôi đi Nụ cười

Tôi đang làm việc một dự án mà tôi kéo một số dữ liệu từ một tìm kiếm, đóng gói nó vào thư XML và sau đó là XML mà cuối cùng được chuyển đổi thành HTML thông qua XSLT.  Đó là rất nhiều của jQuery tham gia, một chút trong đó thực hiện một số chức năng tabbing.  Khi bạn bấm vào một tab (Thực sự, một <div>), jQuery invokes .hide() và .show() trên các divs (tải ban đầu trang tải tất cả nội dung, do đó, có không có postbacks trong trường hợp này).

Một loạt các giờ trước đây, tab chuyển mạch logic bắt đầu cư xử erratically và nó sẽ không hiển thị một trong các tab của tôi.  Theo tôi cuối cùng dõi nó xuống đến một thực tế rằng internet explorer (tối thiểu) nghĩ rằng các <div> Tags lồng nhau đến nay, sâu xa hơn nhằm mục đích.Thanh công cụ phát triển sẽ hiển thị:

-<DIV id = "Tab1Content">
  -<div>
    -<div>
      -<DIV id = "Tab2Content">
        -<div>
           …………………………
                   </div>  <-cuối cùng Hiển thị nó đã được đóng cửa tất cả các cách xuống ở đây!

Vì vậy, Nếu tôi đã làm một $("#Tab1Content").ẩn(), Tôi cũng sẽ ẩn Tab2 và tôi không bao giờ có thể hiển thị Tab2 nếu tôi cũng không cho Tab1.  Tôi sao chép và dán mã vào visual studio và nó cho thấy tất cả các div lót lên độc đáo, cũng giống như họ đã nghĩa vụ phải thực hiện, Tìm kiếm như thế này:

-<DIV id = "Tab1Content">
  +<div>
  +<div>
-<DIV id = "Tab2Content">
  +<div>
  +<div>

Tôi đánh đập đầu của tôi vào tường cho một thời gian và nhận thấy rằng trong thực tế HTML mã tạo ra rất nhiều sản phẩm nào <div> Download, giống như:

<cơ thể>

  <DIV id = "Tab1Content">

    <DIV id = "row1" />
    <DIV id = "row2" />

  </div>

  <DIV id = "Tab2Content">

    <DIV id = "row1" />
    <DIV id = "row2" />

  </div>

</cơ thể>

(Ở trên là waaaaaaaaaaaay đơn giản.  Các thẻ div có sản phẩm nào là hoàn toàn hợp lệ. Một số của tôi <div> Tags được đầy đủ các nội dung, nhưng nhiều hơn nữa không.  Tôi đến việc thực hiện đó của tôi <XSL:cho mỗi> chỉ thị phát ra các hình thức ngắn div tags khi xsl:cho mỗi không ' tìm thấy bất kỳ dữ liệu.  Tôi buộc phải bình luận một HTML đầu ra, như được hiển thị:

image

 

Sau khi tôi đã làm điều đó, Tất cả div xếp độc đáo và chuyển đổi thẻ của tôi bắt đầu làm việc.

Như mọi khi, Tôi hy vọng điều này sẽ giúp một người nào đó trong một pinch.

</kết thúc>

Đăng ký vào blog của tôi.

Theo tôi trên Twitter lúc http://www.twitter.com/pagalvin

Tuy nhiên, bộ jQuery–Thay đổi kích thước một ví dụ hình ảnh

Tôi thừa kế một phần web từ đại lý cũ của một khách hàng và nó có một vấn đề kích thước hình ảnh.  Những hình ảnh nên là 60×50 nhưng đối với một số lý do lẻ, các nhà bán ban đầu buộc chúng thành 42×42, do đó, họ trông squashed:

 

Hình ảnh tốt

Hình ảnh xấu

Dưới đây là các đánh dấu (hơi đơn giản):

<Tabl lớp = 'mở rộng-outlook'>
  <thead>
    <tr>
      <th  chiều rộng ='100′>3 Thứ ba</th>
    </tr>
  </thead>

  <tbody>
    <tr lớp = 'thời'>
      <chiều rộng TD ='100′>
        <ul>
          <Li lớp = 'cao'>Cao: 72&deg;F</Li>
          <Li lớp = 'thấp'>Thấp: 44&deg;F</Li>
          <Li lớp = 'tình trạng'>Nắng
            <IMG src =’
http://deskwx.weatherbug.com/images/Forecast/icons/localized/60×50/en/Trans/cond007.png’ chiều rộng ='42’ chiều cao ='42’ Alt =” />
          </Li>
        </ul>
      </TD>
    </tr>

  </tbody>

</Bàn>

Bạn sẽ lưu ý rằng mặc dù các đường dẫn đến hình ảnh cho thấy kích thước thích hợp (60×50) Các nhà cung cấp ban đầu buộc nó trong 42×42.  Tại sao?  Điên.

Dù sao, Tôi muốn có một giải pháp nhanh chóng và dễ dàng cho vấn đề này và tôi đã chuyển sang jQuery.  The trick là để xác định vị trí tất cả các thích hợp <IMG> Tags.  Tôi không muốn muck với bất kỳ thẻ img khác (trong đó có rất nhiều).  Này chút jQuery đã làm các trick:

<kiểu kịch bản = text/javascript"" SRC ="http://Ajax.googleapis.com/Ajax/libs/jQuery/1.5/jQuery.min.js"></kịch bản>

<kiểu kịch bản = "text/javascript">
     $(tài liệu).sẵn sàng(chức năng () {

         $(' li.condition > IMG').mỗi(chức năng (chỉ số, mục)
           
{
             $(mục).CSS("chiều rộng", "60"); 
             $(mục).CSS("chiều cao", "50");
            });
     }); // Tải tài liệu
</kịch bản>

Có chút mã tìm thấy bộ sưu tập <Li> Tags có lớp là "điều kiện" và <IMG> trẻ em.  Nó sau đó iterates thông qua tất cả mà.  Làm việc như một say mê.

Tôi có lẽ có thể sắp xếp nó, nhưng tôi không bao giờ một loại unix guy mà giải quyết π để 18 chữ số chính xác bằng cách sử dụng sed và awk và tôi không phải là loại đó nếu jQuery guy hoặc Nụ cười.

</kết thúc>

Đăng ký vào blog của tôi.

Theo tôi trên Twitter lúc http://www.twitter.com/pagalvin

Thực hiện một hệ thống toàn cầu cửa sổ Pop-up thông báo

Tôi đã viết lên một bài viết cho www.SharePoint.Briefing.com mang tên"Thực hiện một hệ thống toàn cầu cửa sổ Pop-up thông báo.”  Chức năng này được áp dụng cho trường cao đẳng cộng đồng liên lạc đóng cửa trường nhờ rain và vv. 

Nó sử dụng danh sách tùy chỉnh, ra khỏi hộp SharePoint dịch vụ và web một số jQuery để làm việc.

Đây là một lời trêu ghẹo:

image

Đọc toàn bộ điều ở đây: http://www.sharepointbriefing.com/features/article.php/3918471/Implement-a-Global-Pop-up-Notification-System.htm

</kết thúc>

Đăng ký vào blog của tôi.

Theo tôi trên Twitter lúc http://www.twitter.com/pagalvin

Kiểm soát OK và hủy bỏ nút của bạn

Tôi đã viết bài viết này một khi trở lại, nhưng hình như tôi không liên kết với nó từ blog của tôi lúc đó, Vì vậy, ở đây đi:

image

Bài viết này mô tả cách để buộc newform.aspx để chuyển hướng đến một trang khi người dùng nhấp OK và một trang khác nhau khi cô nhấp Hủy bỏ.

</kết thúc>

Đăng ký vào blog của tôi.

Theo tôi trên Twitter lúc http://www.twitter.com/pagalvin