фильтр sharepoint DataFormWebPart в TextBox - PullRequest
0 голосов
/ 21 июня 2010

Я хочу отфильтровать DFWP через asp: TextBox.

Используя Office Designer, я добавил DFWP с данными на страницу. Добавлено asp: текстовое поле с сервером runat, autopostback и ID = "textBoxSearch". Создал переменную [var] в DFWP и в разделе исходного кода выбрал элемент textBoxSearch.

Затем добавлен фильтр "field_1 содержит [var]".

Этот поиск (фильтр) работал в течение двух недель, затем фильтр не работал. Помогло только воссоздание DFWP. Еще через неделю фильтр был сломан. Любой текст в текстовом поле был проигнорирован фильтром.

Я понял, что SP не может видеть asp: textbox "textBoxSearch" в переменной [var], потому что если изменение "содержит [var]" на "содержит" некоторый текст ", это будет работать.

Как это может быть - работать какое-то время, а потом случайно нет?

Если не использовать внутреннюю веб-часть фильтра, а текстовое поле, как это исправить?

1 Ответ

0 голосов
/ 23 июня 2010

Я обнаружил, что SP смотрит на свойство Text asp: TextBox и на несуществующее свойство Value. Это будет изменено после сброса IIS. Поэтому, когда SP смотрит на значение, фильтр не работает.

Ответ два - написать свой собственный элемент управления ascx CustomTextBox на основе asp: TextBox.

Не забывайте, что вы не можете скопировать обычные файлы кодовых изображений в SP.

Сначала напишите полный файл codebehind и скомпилируйте его в DLL (я назвал это SearchTextBox.dll):

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Configuration;
using System.Data;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;


namespace WebApplication3
{
    public partial class NewTextBox : System.Web.UI.UserControl
    {
        protected global::System.Web.UI.WebControls.TextBox TextBox_PhoneSearch;

        protected void Page_Load(object sender, EventArgs e)
        {

        }
        public string Text
        {
            get { return TextBox_PhoneSearch.Text; }
            set { TextBox_PhoneSearch.Text = value; }
        }
        public string Value
        {
            get
            {
                return TextBox_PhoneSearch.Text;
            }
        }
    }
}

Затем назначьте эту DLL с ключами и вставьте на сервер GAC (или дайте специальные права).

После этого вы можете связать сборку с открытым ключом в управляющем файле ascx (без файлов с зашифрованными кодами). Файл NewTextBox.ascx:

<%@ Assembly Name ="SearchTextBox, Version=1.0.0.0, Culture=neutral, PublicKeyToken=b341d7aadf237863"%>
<%@ Control Language="C#" AutoEventWireup="true" Inherits="WebApplication3.NewTextBox" %>
<asp:TextBox ID="TextBox_PhoneSearch" runat="server" AutoPostBack="true" class="ms-sbplain" style="width: 280px;"></asp:TextBox>

Скопируйте NewTextBox.ascx в ... \ 12 \ TEMPLATE \ CONTROLTEMPLATES \

Элемент управления NewTextBox.ascx готов к использованию. Нам просто нужно зарегистрировать его на странице SP:

<%@ Register Src="~/_controltemplates/NewTextBox.ascx" TagName="NewTextBox" TagPrefix="MyCompany" %>

И вставить на эту страницу:

<MyCompany:NewTextBox id="TextBoxSearch" runat="server"/>
...