shareBox在TextBox中过滤DataFormWebPart

时间:2010-06-21 14:19:57

标签: sharepoint filter dataformwebpart

我想通过asp:TextBox过滤DFWP。

使用Office Designer我向页面添加了带有数据的DFWP。 添加了带有runat服务器,autopostback和ID =“textBoxSearch”的asp:textbox。 在DFWP中创建变量[var],在源节中选择元素textBoxSearch。

然后添加过滤器“field_1包含[var]”。

此搜索(过滤器)工作了两周,然后过滤掉了。只有重建DFWP才有帮助。过了一周,过滤器坏了。过滤器忽略了文本框中的任何文本。

我发现SP无法在变量[var]中看到asp:textbox“textBoxSearch”,因为如果将“包含[var]”更改为“包含'某些文本'”,它将起作用。

怎么可能 - 工作一段时间,然后意外不工作?

如果没有使用内部过滤器网络部件,但文本框,如何解决?

1 个答案:

答案 0 :(得分:0)

我发现SP查找属性Text of asp:TextBox和非现有属性Value。 IIS重置后会更改。因此,当SP查找值过滤器不起作用时。

答案是两个基于asp:TextBox编写自己的控件ascx CustomTextBox。

不要忘记您无法将通常的代码隐藏文件复制到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 \

Control NewTextBox.ascx已准备就绪。 我们只需要在SP页面中注册它:

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

并将其插入此页面:

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