【问题标题】:sharepoint filter DataFormWebPart within TextBox文本框中的共享点过滤器 DataFormWebPart
【发布时间】:2010-06-21 14:19:57
【问题描述】:

我想通过 asp:TextBox 过滤 DFWP。

使用 Office Designer,我将带有数据的 DFWP 添加到页面。 添加了带有运行服务器、自动回发和 ID="textBoxSearch" 的 asp:textbox。 在 DFWP 中创建变量 [var] 并在源部分选择元素 textBoxSearch。

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

这个搜索(过滤器)工作了两个星期,然后过滤器坏了。只有重新创建 DFWP 才有帮助。又过了一周,过滤器坏了。文本框中的任何文本都被过滤器忽略了。

我发现 SP 在变量 [var] 中看不到 asp:textbox "textBoxSearch",因为如果将 "contains [var]" 更改为 "contains 'some text'" 它将起作用。

怎么可能 - 工作了一段时间,然后意外地没有?

如果不使用内部过滤器web-part,而是使用文本框,如何解决?

【问题讨论】:

    标签: sharepoint filter dataformwebpart


    【解决方案1】:

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

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

    不要忘记您不能将常用的代码隐藏文件复制到 SP。

    首先,编写完整的代码隐藏文件并将其编译为 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"/>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-04-13
      • 2018-12-01
      • 2013-02-07
      • 2014-10-10
      • 2011-07-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多