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

Nhanh chóng khắc phục: "Tên kiểu nội dung '$ tài nguyên:ReportServerResources … không thể chứa … ký tự đặc biệt”

Tôi đã chi tiêu một số thời gian làm sạch lên một SharePoint 2010 Trang web và là một trong những vấn đề dọn dẹp liên quan đến một tham nhũng / không chính xác cài đặt dịch vụ báo cáo SQL Server vấn đề.  Vấn đề phát sinh khi một đồng nghiệp của tôi đã cố gắng để tiết kiệm một trang web như là một mẫu và sau đó tạo ra tạo ra một trang web mới dựa trên mẫu đó.  Lưu hoạt động hoạt động tốt, nhưng khi cô đã cố gắng để tạo ra các trang web mới, SharePoint Hiển thị thông báo lỗi sau:

Lỗi

Tên loại nội dung ' $Resources:ReportServerResources,DataSourceContentTypeName;' không thể chứa: \ / : * ? “ # % < > { } | ~ & , hai giai đoạn liên tiếp (..), hoặc các ký tự đặc biệt như một tab.

Đây là một màn hình nắp:

 

image

Tôi đã có một cái nhìn tại các loại nội dung trong các trang web và các mặt hàng này:

image

Những loại nội dung được rõ ràng không lành mạnh.

Vấn đề này dường như đi lên rất nhiều trên các Internets và có không có vẻ để là một sự đồng thuận duy nhất về làm thế nào để giải quyết nó.  Tôi tìm thấy một bảng tiện dụng mà ánh xạ tên kiểu nội dung xấu tới tên loại nội dung tốt ở đây: http://social.technet.microsoft.com/Forums/en-ZA/sharepoint2010programming/thread/cb03e866-8184-4943-acfe-cafffa1b8b7a.  Tôi tự Cập Nhật chúng thusly:

image

(BrightStarr trong tên là rõ ràng là tùy chọn, nhưng nó không thể làm tổn thương Nụ cười )

Điều này cho phép tôi để tạo ra một mẫu mới và đã không phá vỡ bất cứ điều gì trên các trang web khác, bao gồm một số công cụ máy chủ PerformancePoint rằng một nhóm hoàn toàn khác nhau của những người đã làm việc trên.  Tôi đã sau đó có thể tạo ra một trang web mới trên mẫu.  Thành công!

Tôi không chắc chắn đây là một 100% giải pháp, nhưng nó đã cho tôi và tất cả mọi người tham gia trong quá khứ này gây phiền nhiễu lỗi.  Nếu tôi tìm thấy bất cứ điều gì mới, Tôi sẽ đăng một bản Cập Nhật.  Lo lắng của tôi xuất phát từ thực tế rằng các tên không phải là sai trái tại địa điểm đầu tiên và bằng cách sửa chữa tên hiển thị, Tôi không chạm vào tên nội 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

Một trong những nguyên nhân cho "tác giả của lỗi này không nêu rõ lý do.”

Tôi đã làm rất nhiều công việc với SharePoint tìm kiếm gần đây và đặc biệt là các lớp học KeywordQuery, tài sản và phương pháp.

Nếu bạn muốn kết quả thiết lập để trở lại kết quả ở trên và vượt the usual suspects (xem ở đây), bạn thêm nó vào bộ sưu tập SelectedProperties, như trong:

myKeywordQuery.SelectProperties.Add("xyzzy");

Cảm ơn rất nhiều và một tip của mũ để Corey Rothbài đăng này rất hữu ích blog (http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2008/02/19/how-to-use-the-moss-enterprise-search-keywordquery-class.aspx)

Trong trường hợp của tôi, "xyzzy" không phải là thực sự là một bất động sản được quản lý.  Khi tôi thêm nó vào SelectedProperties dù sao, SharePoint đã ném một trong những yêu thích của tôi bao giờ thời gian chạy ngoại lệ:

"Tác giả của lỗi này không nêu rõ lý do một."

Tôi đặc biệt thích vốn "R" trong lý do.  Điều này có vẻ với tôi tương đương .net"Tôi đã không có miệng, và tôi phải scream.”

</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

Tham khảo thuận tiện: Mặc định kết quả từ tìm kiếm KeywordQuery

Khi bạn gọi thi công() phương pháp trên một KeywordQuery, bạn có thể tạo ra một ResultTable dựa trên ResultType.RelevantResults.  Đoạn mã này minh họa những gì tôi có nghĩa là:

ResultTableCollection resultsTableCollection = myKeywordQuery.Execute();

ResultTable searchResultsTable = resultsTableCollection[ResultType.RelevantResults];

Bảng kết quả sẽ có các cột sau thông tin: 

WorkId
Đánh giá
Tiêu đề
Tác giả
Kích thước
Đường dẫn
Mô tả
Viết
SiteName
CollapsingStatus
HitHighlightedSummary
HitHighlightedProperties
ContentClass
IsDocument
PictureThumbnailURL
ServerRedirectedURL

Tôi xuất phát từ danh sách này từ một SharePoint 2010 môi trường, Phiên bản doanh nghiệp.  Hy vọng rằng nó sẽ được thuận tiện cho một ai đó 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

Một lý do cho: "Không thể giải nén các tệp cab trong dung dịch”

Trong khi làm việc trên một visual studio web phần dự án ngày hôm nay, Tôi đã làm một tái-org nhỏ của một số tập tin phải được đưa vào thư mục _layouts như là một phần của quá trình triển khai. Đặc biệt, Tôi đổi tên một tập tin .js từ "TypeAhead.js" để "TypeAhead(cũ).js"  Tôi định để loại bỏ nó ngay sau khi kế nhiệm của nó "TypeAhead.js" chứng minh chính xác.  Nó trông như thế này:

image

Điều này ngay lập tức gây ra một vấn đề với visual studio, khi tôi đã cố gắng để triển khai các dự án:

Lỗi xuất hiện trong triển khai bước 'Thêm giải pháp': Không thể giải nén các tệp cab trong dung dịch.

Nó chỉ ra rằng bạn không nên đặt một ngoặc đơn trong tên tập tin.  Tôi gỡ bỏ các parens và mà giải quyết được vấn đề.

</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

Phân tích cú pháp XML với LINQ

Đây là một ví dụ nhanh chóng bằng cách sử dụng LINQ để phân tích một số  XML và nhận được tại ngọt, ngọt trong đó thuộc tính.

Đây là XML tôi muốn phân tích cú pháp:

<?Phiên bản XML = "1.0" Encoding = "utf-8" ?>
<DeafultConfigurationSets>
  <PageLayouts>

    <PageLayout tên = "xyzzy">
      <Tab>
        <Tab TabOrder = "1" TabLabel = "x" SharePointContentType = "một" AdditionalConstraints = "ac1" />
        <Tab TabOrder = "2" TabLabel = "y" SharePointContentType = "b" AdditionalConstraints = "ac2" />
      </Tab>
    </PageLayout>

    <PageLayout tên = "xyzzy2">
      <Tab>
        <Tab TabOrder = "100" TabLabel = "x" SharePointContentType = "một" AdditionalConstraints = "ac1" />
        <Tab TabOrder = "101" TabLabel = "y" SharePointContentType = "b" AdditionalConstraints = "ac2" />
        <Tab TabOrder = "103" TabLabel = "z" SharePointContentType = "c" AdditionalConstraints = "ac3" />
      </Tab>
    </PageLayout>

  </PageLayouts>
</DeafultConfigurationSets>

Tôi muốn xây dựng một số tab tại thời gian chạy của phân tích ở trên.  Tab của tôi phụ thuộc vào một bố cục trang.  Nếu cách bố trí trang của tôi tên là "xyzzy2" sau đó, tôi muốn để có được các tab 100, 101 và 103 (các tab trong <PageLayout tên = "xyzzy2">).

Đây là LINQ nào đó:

var allTabs =
              từ p trong
                  XElement.Parse(theXmlToParse).
                 
Yếu tố("PageLayouts").
                  Yếu tố("PageLayout")
              nơi (p.Attribute("tên").Value.Equals("xyzzy2"))
              từ m p.Elements("Tab").Yếu tố("Tab")
              chọn m;

          Results.Text = chuỗi.Có sản phẩm nào;

          foreach (var aTab trong allTabs)
          {
              Results.Text =
                  "Thứ tự tab: " + aTab.Attribute("TabOrder").Giá trị + " |" +
                  "Tab Label: " + aTab.Attribute("TabLabel").Giá trị + " | " +
                  "SharePointContentType: " + aTab.Attribute("SharePointContentType").Giá trị + " | " +
                  "AdditionalConstraints: " + aTab.Attribute("AdditionalConstraints").Giá trị + "r";
          }

Trong các bên trên, biến "theXmlToParse" là một biến Chuỗi, nhưng bạn có thể sử dụng tải() Các phương pháp trên một dòng nếu bạn thích.

"Kết quả" là một nhãn trên một biểu mẫu web và khi mã này thực hiện, nó trông như thế này:

SNAGHTML11cd2e7c

Tôi đã không làm việc ra làm thế nào để sắp xếp các kết quả chưa, Vì vậy, tôi sẽ rời khỏi đó cho một bài đăng blog 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

SharePoint 2010 KeywordQuery và người dùng vô danh

Tôi kích hoạt chưa xác định người truy cập trong trang web của tôi để thử nghiệm trong một tìm kiếm web phần tôi đã phát triển và không có thật ngạc nhiên tuyệt vời, nó không khá làm việc.  Chưa xác định người truy cập là khá nhiều luôn luôn là một thách thức đối với tôi.

Trong trường hợp này, tìm kiếm ban đầu đã không chạy cho một số lý do.  Tôi nên nói rằng nó được chạy, nhưng nó không phải trả lại bất kỳ kết quả.  Tôi đang sử dụng KeywordQuery cho rằng hiển thị đầu tiên.

Tôi đã làm một tìm kiếm nhanh và bài đăng blog của"sowmyancs"đã đưa ra khá nhanh chóng: “SharePoint 2010 Tìm kiếm: không hiển thị bất kỳ kết quả cho người dùng vô danh?”  Blog mục mô tả vấn đề từ một trong số các quan điểm hộp tìm kiếm từ khóa nhưng các hành vi được tương tự với tôi-nó đã làm việc cho xác thực người dùng và cho người dùng vô danh, nhưng người dùng vô danh không có kết quả nào. 

Tôi theo hướng dẫn và bang!  Nó giải quyết vấn đề của tôi.  I 'm not sure tác dụng phụ này sẽ có và họ có thể chứng minh là một vấn đề, nhưng kết quả ngắn hạn là hữu ích.

Bấm vào thông qua các blog:

image

</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

SharePoint 2010 KeywordQuery và tài sản HiddenConstraints

Tôi đã làm một chút công việc với các KeywordQuery đối tượng trong SharePoint 2010 và làm việc sử dụng các HiddenConstraints bất động sản.

Tôi đã không thấy bất kỳ thông tin hữu ích ngay lập tức trên rằng bất động sản, Vì vậy tôi nghĩ tôi sẽ nhanh chóng jot xuống làm thế nào tôi đã sử dụng nó.

Như xa như tôi có thể nói, Đây là một hạn chế tự động thêm vào các truy vấn do đó bạn có thể sắp xếp của công viên nó có và không phải lo lắng về nó.  Như vậy, đó là chỉ là một từ khóa (hoặc bộ từ khóa) và bổ ngữ mà bạn có thể nhập vào để giao diện khi bạn thực hiện tìm kiếm từ khóa.  Đây là một ví dụ:

keywordQuery.HiddenConstraints = "phạm vi:\"Industry" ";

Bạn có thể thêm thêm ràng buộc với một vũ trụ delimiter.

keywordQuery.HiddenConstraints = "phạm vi:\"Industry" Quốc phòng";

Ở trên là nói bằng tiếng Anh, "chạy một truy vấn từ khóa tìm kiếm"quốc phòng"và hơn nữa, sử dụng phạm vi "Công nghiệp".

Đây là một cách khác để nhìn vào nó:

image

Tôi đã sử dụng nó để cung cấp một phạm vi tự động phụ thuộc vào ngữ cảnh trên một phần tùy chỉnh trang web.  Khi người dùng nhấp chuột vào một tab và nhấp chuột một nút tìm kiếm, tab ra các phạm vi tìm kiếm cụ thể.  Nó làm việc tốt cho đến nay.

</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í dụ: XSLT tạo HTML Href

Tôi đã làm một chút XSL thứ gần đây và nghĩ rằng tôi muốn đặt cùng một mẫu để tham khảo trong tương lai của tôi và có thể sẽ là giá trị cho tất cả chúng ta XSLT-ers thực hiện một cuộc sống trong các internets.

Xem xét các XML sau đây:

<Bá tước FdcSearchTabsCollection = "2">
  <SearchTab nhãn = "ngành công nghiệp" SortOrder = "00" nhãn = "Công nghiệp" SearchConstraints = "contenttype:Ngành công nghiệp" TabID = "831b2a74-98c4-4453-8061-86e2fdb22c63" />
  <SearchTab nhãn = "thực hành" SortOrder = "01" nhãn = "Thực hành" SearchConstraints = "contenttype:PracticeGroups" TabID = "678e206b-6996-421f-9765-b0558fe1a9c0" />
</FdcSearchTabsCollection>

Snippet XSL sau sẽ tạo ra một danh sách được sắp xếp của hrefs tab:

<XSL:trận đấu tiêu bản = "FdcSearchTabsCollection" XML:vũ trụ = "bảo vệ">
   
    <!– "Tất cả" tab –>
    <a href = "javascript:ViewTab('Tất cả')">Xem tất cả</một>
   
    <!– Mỗi cá nhân tab –>
    <!– Iterate qua tất cả các tab và hiển thị đúng  liên kết. –>
    <XSL:cho mỗi chọn = "SearchTab">
      <XSL:sắp xếp select="@SortOrder"/>

      …
      <a href = "javascript:ViewTab(‘{@ TabID}’)"><XSL:giá trị của select="@Label"/></một>
    </XSL:cho mỗi>

    <BR /> 
   

   </XSL:tiêu bản>

Đây là những gì nó trông giống như trong SharePoint:

SNAGHTML78aa2cb

 

 

</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