2010-06-21 6 views
0

Je veux filtrer DFWP à travers asp: TextBox.filtre de point de partage DataFormWebPart dans TextBox

Utilisation de Office Designer J'ai ajouté DFWP avec des données à la page. Ajouté asp: zone de texte avec serveur runat, autopostback et ID = "textBoxSearch". La variable créée [var] dans DFWP et dans la section source a choisi l'élément textBoxSearch.

Ensuite ajouté filtre "champ_1 contient [var]".

Cette recherche (filtre) a beaucoup fonctionné pendant deux semaines, puis le filtre s'est cassé. Seul le recréage de DFWP a aidé. Après une autre semaine, le filtre a été brisé. Tout texte dans la zone de texte a été ignoré par le filtre. J'ai compris que SP ne peut pas voir asp: textbox "textBoxSearch" dans la variable [var], car si changer "contains [var]" à "contient 'du texte' 'ça marchera. Comment peut-il être - travailler un certain temps, puis accidentellement pas?

Si vous n'utilisez pas la partie Web de filtre interne, mais la zone de texte, comment la réparer?

Répondre

0

J'ai trouvé que SP ressemble à la propriété Text de asp: TextBox et à la propriété non existante Value. Il sera changé après la réinitialisation d'IIS. Donc, quand SP regarde à Value, le filtre ne fonctionne pas.

La réponse est deux écrire votre propre contrôle ascx CustomTextBox basé sur ASP: TextBox. N'oubliez pas que vous ne pouvez pas copier les fichiers codebehind habituels vers SP.

D'abord, écrire le fichier codebehind complet et le compiler à DLL (je l'ai appelé 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; 
      } 
     } 
    } 
} 

puis attribuez-lui cette DLL avec les touches et insérez le GAC du serveur (ou accorder des droits spéciaux). Après cela, vous pouvez lier l'assemblage avec la clé publique dans le fichier de contrôle ascx (sans les fichiers codebehind). fichier 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> 

Copie NewTextBox.ascx à ... \ 12 \ TEMPLATE \ ControlTemplates \

contrôle NewTextBox.ascx est prêt à l'emploi. Nous avons juste besoin de l'enregistrer dans la page SP:

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

et insérez-le à cette page:

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