Hi,
bei mir funzt es aber, hier mal der Code (vielleicht brauchst du ja eine
auto-sortier-ddl, musst dann auf der aspx-seite noch die textbox und die ddl
anlegen), die wichtigen punkte am Anfang(Public event) und am
Ende(ddl-indexchanged event mit raiseevent).
Public Class FilterDropDownList
Inherits System.Web.UI.UserControl
#Region " Vom Web Form Designer generierter Code "
'Dieser Aufruf ist f�r den Web Form-Designer erforderlich.
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
End Sub
Protected WithEvents FilterBox As System.Web.UI.WebControls.TextBox
Protected WithEvents FilterList As System.Web.UI.WebControls.DropDownList
'HINWEIS: Die folgende Platzhalterdeklaration ist f�r den Web Form-Designer
erforderlich.
'Nicht l�schen oder verschieben.
Private designerPlaceholderDeclaration As System.Object
Private Sub Page_Init(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Init
'CODEGEN: Dieser Methodenaufruf ist f�r den Web Form-Designer
erforderlich
'Verwenden Sie nicht den Code-Editor zur Bearbeitung.
InitializeComponent()
End Sub
#End Region
Public Event DdlIndexChanged(ByVal sender As Object, ByVal e As EventArgs)
Private Const filterScript As String = "" & vbCrLf & _
"<script language=JavaScript>" & vbCrLf & _
"<!--" & vbCrLf & _
"/*******************************************************" & vbCrLf & _
"Filter-Function for UserControl FilterDropDownList.ascx" & vbCrLf & _
"********************************************************/" & vbCrLf & _
"function startFilter(pattern,listId){" & vbCrLf & _
" var list=document.getElementById(listId);" & vbCrLf & _
" var partOne, partTwo, maxLength;" & vbCrLf & _
" //pattern = new RegExp(pattern,""i""); " & vbCrLf & _
" var searchType;" & vbCrLf & _
" var index=pattern.indexOf(""*"");" & vbCrLf & _
" if (pattern.substring(0,1)==""*""){
//Am Anfang" & vbCrLf & _
" searchType=""InsideWord"";" & vbCrLf & _
" pattern=pattern.substring(1,pattern.length);" & vbCrLf & _
" maxLength=pattern.length;" & vbCrLf & _
" }else
if(pattern.substring(pattern.length-1,pattern.length)==""*""){//Am Ende" &
vbCrLf & _
" searchType=""FrontOfWord"";" & vbCrLf & _
" pattern=pattern.substring(0,pattern.length-1);" & vbCrLf & _
" maxLength=pattern.length;" & vbCrLf & _
" }else if(index > -1){
//Mittendrin" & vbCrLf & _
" searchType=""Both"";" & vbCrLf & _
" partOne=pattern.substring(0,index);" & vbCrLf & _
" partTwo=pattern.substring(index+1,pattern.length);" & vbCrLf & _
" maxLength=partOne.length+partTwo.length;" & vbCrLf & _
" }else" & vbCrLf & _
" searchType=""FrontOfWord""; " & vbCrLf & _
"" & vbCrLf & _
" /*" & vbCrLf & _
" if the dropdown list passed in hasn't" & vbCrLf & _
" already been backed up, we'll do that now" & vbCrLf & _
" */" & vbCrLf & _
" if (!list.bak){" & vbCrLf & _
" /*" & vbCrLf & _
" We're going to iterate through the backed up dropdown" & vbCrLf
& _
" list. If an item matches, it is added to the list of" & vbCrLf
& _
" matches. If not, then it is added to the list of non matches."
& vbCrLf & _
" */" & vbCrLf & _
" list.bak = new Array();" & vbCrLf & _
" for (n=0;n<list.length;n++){" & vbCrLf & _
" list.bak[list.bak.length] = new Array(list[n].value,
list[n].text);" & vbCrLf & _
" }" & vbCrLf & _
" }" & vbCrLf & _
"" & vbCrLf & _
" /*" & vbCrLf & _
" We're going to iterate through the backed up dropdown" & vbCrLf & _
" list. If an item matches, it is added to the list of" & vbCrLf & _
" matches. If not, then it is added to the list of non matches." &
vbCrLf & _
" */" & vbCrLf & _
" var match = new Array();" & vbCrLf & _
" var nomatch = new Array();" & vbCrLf & _
"" & vbCrLf & _
" if(!pattern.length==0){" & vbCrLf & _
" for (n=0;n<list.bak.length;n++){" & vbCrLf & _
" var nextItem = list.bak[n][1].toLowerCase();" & vbCrLf & _
" if(maxLength > nextItem.length){//add to nomatch if item is
shorter then searched text" & vbCrLf & _
" nomatch[nomatch.length] = new Array(list.bak[n][0],
list.bak[n][1]);" & vbCrLf & _
" }else{" & vbCrLf & _
" if(searchType==""FrontOfWord""){" & vbCrLf & _
"
if(nextItem.substring(0,pattern.length)==pattern.toLowerCase()){" & vbCrLf & _
" match[match.length] = new Array(list.bak[n][0],
list.bak[n][1]);" & vbCrLf & _
" }else{" & vbCrLf & _
" nomatch[nomatch.length] = new
Array(list.bak[n][0], list.bak[n][1]);" & vbCrLf & _
" }" & vbCrLf & _
" }else if(searchType==""InsideWord""){" & vbCrLf & _
"
if(nextItem.substr(nextItem.length-pattern.length,pattern.length)==pattern.toLowerCase()){"
& vbCrLf & _
" match[match.length] = new Array(list.bak[n][0],
list.bak[n][1]);" & vbCrLf & _
" }else{" & vbCrLf & _
" nomatch[nomatch.length] = new Array(list.bak[n][0],
list.bak[n][1]);" & vbCrLf & _
" }" & vbCrLf & _
" }else
if(searchType==""Both""){//alert(""Both\n""+""NextItem:""+nextItem+""\npartOne:""+partOne+""\npartTwo:""+partTwo);"
& vbCrLf & _
"
if(nextItem.substring(0,partOne.length)==partOne.toLowerCase() &&
nextItem.substr(nextItem.length-partTwo.length,partTwo.length)==partTwo.toLowerCase()){"
& vbCrLf & _
" match[match.length] = new Array(list.bak[n][0],
list.bak[n][1]);" & vbCrLf & _
" }else{" & vbCrLf & _
" nomatch[nomatch.length] = new Array(list.bak[n][0],
list.bak[n][1]);" & vbCrLf & _
" }" & vbCrLf & _
" }" & vbCrLf & _
" }" & vbCrLf & _
" }" & vbCrLf & _
"}" & vbCrLf & _
"" & vbCrLf & _
"//First delete all items" & vbCrLf & _
"list.length=0;" & vbCrLf & _
"" & vbCrLf & _
"if (pattern.length==0)" & vbCrLf & _
" match=list.bak;" & vbCrLf & _
"" & vbCrLf & _
"/*" & vbCrLf & _
"Now we completely rewrite the dropdown list." & vbCrLf & _
"Only the matches will be shown" & vbCrLf & _
"*/" & vbCrLf & _
"for(n=0;n<match.length;n++){" & vbCrLf & _
" var value=match[n][0];" & vbCrLf & _
" var text=match[n][1];" & vbCrLf & _
" list[n]=new Option(text,value);" & vbCrLf & _
"}" & vbCrLf & _
"/*** The 'nomatches' wont be shown in the usercontrol" & vbCrLf & _
"/*for (n=0;n<nomatch.length;n++){" & vbCrLf & _
" list[n+match.length].value = nomatch[n][0];" & vbCrLf & _
" list[n+match.length].text = nomatch[n][1];" & vbCrLf & _
"}*/" & vbCrLf & _
"" & vbCrLf & _
"/*" & vbCrLf & _
"Finally, we make the 1st item selected - this" & vbCrLf & _
"makes sure that the matching options are" & vbCrLf & _
"immediately(apparent)" & vbCrLf & _
"*/" & vbCrLf & _
"if (list.length>0)list.selectedIndex=0;" & vbCrLf & _
"}" & vbCrLf & _
"/********************************************************************************"
& vbCrLf & _
" ENDE Filter-Function for UserControl FilterDropDownList.ascx" &
vbCrLf & _
"********************************************************************************/"
& vbCrLf & _
"-->" & vbCrLf & _
"</script>"
Public Sub New()
MyBase.new()
End Sub
Public Sub New(ByVal source As DataView)
MyBase.New()
DataSource = source
End Sub
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
registerScript()
FilterBox.Attributes.Add("onPropertyChange", "startFilter(this.value,'"
& FilterList.ClientID & "');")
End Sub
Private Sub registerScript()
If Not Page.IsClientScriptBlockRegistered("FilterScript") Then
Page.RegisterClientScriptBlock("FilterScript", filterScript)
End If
End Sub
Public Function getSelectedValue() As String
Return FilterList.SelectedValue
End Function
Public Property DataSource() As DataView
Get
Return DirectCast(FilterList.DataSource, DataView)
End Get
Set(ByVal Value As DataView)
FilterList.DataSource = Value
FilterList.DataBind()
End Set
End Property
Public Property DataTextField() As String
Get
Return FilterList.DataTextField
End Get
Set(ByVal Value As String)
FilterList.DataTextField = Value
End Set
End Property
Public Property DataValueField() As String
Get
Return FilterList.DataValueField
End Get
Set(ByVal Value As String)
FilterList.DataValueField = Value
End Set
End Property
Public Property Sort() As String
Get
Return DataSource.Sort
End Get
Set(ByVal Value As String)
Dim source As DataView = DataSource
source.Sort = Value
DataSource = source
End Set
End Property
Public ReadOnly Property TextBox() As TextBox
Get
Return FilterBox
End Get
End Property
Public ReadOnly Property DropDownList() As DropDownList
Get
Return FilterList
End Get
End Property
Private Sub FilterList_SelectedIndexChanged(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles FilterList.SelectedIndexChanged
RaiseEvent DdlIndexChanged(sender, e)
End Sub
End Class
------
Und in der form beispielsweise:
Private Sub ddlProIndexChanged(ByVal sender As Object, ByVal e As
System.EventArgs) Handles FilterPro.DdlIndexChanged
'Mach was...
End Sub
...wobei FilterPro eine Instanz meines UserControls ist.
-----Urspr�ngliche Nachricht-----
Von: Laszlo Pinter [mailto:[EMAIL PROTECTED]
Gesendet: Mittwoch, 16. M�rz 2005 15:50
An: [email protected]
Betreff: AW: [Asp.net] Raiserevent
Hi,
Geht leider immer nocht nicht. Ich komme nicht bis zum Event im Debugger.
Das Event habe ich sichtbar gemacht.
Ich schaue weiter...
Gr�sse
Laszlo
>>-----Urspr�ngliche Nachricht-----
>>Von: Tim Schmelter [mailto:[EMAIL PROTECTED]
>>Gesendet: Mittwoch, 16. M�rz 2005 15:31
>>An: [email protected]
>>Betreff: AW: [Asp.net] Raiserevent
>>
>>
>>Hallo,
>>
>>sollte so gehen:
>>
>>Sub ctlDDL_DropDownList1_SelectedIndexChanged(ByVal Sender As
>>Object, ByVal e As EventArgs) Handles
>> WebUserControl1.ctlDropDownList_SelectedIndexChanged
>> Me.Label1.Text = DropDownList.DropDownListItemChanged
>>End Sub
>>
>>Wobei das Event sichtbar sein sollte ;)
>>Gru�,
>>Tim
>>
>>
>>
>>-----Urspr�ngliche Nachricht-----
>>Von: Laszlo Pinter [mailto:[EMAIL PROTECTED]
>>Gesendet: Mittwoch, 16. M�rz 2005 15:03
>>An: [email protected]
>>Betreff: [Asp.net] Raiserevent
>>
>>Hallo,
>>
>>Ich habe ein kleines Problemchen: mein Event feuert nicht
>>bzw. wird gar nicht ausgel�st.
>>Ich habe eine nur Seite und ein usercontrol.
>>Control:
>>Public Class WebUserControl1
>> Inherits System.Web.UI.UserControl
>>
>> Event ctlDropDownList_SelectedIndexChanged(ByVal Sender
>>As Object, ByVal e As EventArgs)
>> Property DropDownListItemChanged() As String
>> Get
>> Return Me.DropDownList1.SelectedIndex
>> End Get
>> Set(ByVal Value As String)
>> Me.DropDownList1.SelectedIndex = Value
>> End Set
>> End Property
>> Private Sub Page_Load(ByVal sender As System.Object, ByVal e As
>>System.EventArgs) Handles MyBase.Load
>> If Not Page.IsPostBack Then
>> Me.DropDownList1.Items.Insert(0, "erste")
>> Me.DropDownList1.Items.Insert(1, "zweite")
>> Me.DropDownList1.Items.Insert(2, "dritte")
>> Me.DropDownList1.Items.Insert(3, "vierte")
>> Me.DropDownList1.Items.Insert(4, "f�nfte")
>> Me.DropDownList1.Items.Insert(5, "sechste")
>> Me.DropDownList1.DataBind()
>> Me.DropDownList1.AutoPostBack = True
>> End If
>> End Sub
>> Private Sub DropDownList1_SelectedIndexChanged(ByVal
>>sender As System.Object, ByVal e As System.EventArgs) Handles
>>DropDownList1.SelectedIndexChanged
>> RaiseEvent ctlDropDownList_SelectedIndexChanged(Me,
>>EventArgs.Empty)
>> End Sub
>>End Class
>>Seite:
>>Public Class WebForm1
>> Inherits System.Web.UI.Page
>>
>> Protected WithEvents DropDownList As
>>WebApplication1.WebUserControl1
>> Protected WithEvents Label1 As System.Web.UI.WebControls.Label
>>
>> Private Sub Page_Load(ByVal sender As System.Object, ByVal e As
>>System.EventArgs) Handles MyBase.Load
>>
>> End Sub
>> Sub ctlDDL_DropDownList1_SelectedIndexChanged(ByVal
>>Sender As Object, ByVal e As EventArgs) Handles
>>DropDownList.ctlDropDownList_SelectedIndexChanged
>> Me.Label1.Text = DropDownList.DropDownListItemChanged
>> End Sub
>>End Class
>>Sieht vielleicht jemand von euch etwas was ich nicht sehe?
>>Funktioniert das �berhaupt?
>>Ich habe hier:
>>http://geekswithblogs.net/aferrandiz/archive/2004/11/14/14986.
>>aspx ein Beispiel gefunden mit einem Kalender der funktioniert auch.
>>
>>Danke und gr�sse
>>
>>Laszlo Pinter
>>
>>
>>_______________________________________________
>>Asp.net Mailingliste, Postings senden an:
>>[email protected]
>>An-/Abmeldung und Suchfunktion unter:
>>http://www.glengamoi.com/mailman/listinfo/asp.net
>>
>>_______________________________________________
>>Asp.net Mailingliste, Postings senden an:
>>[email protected]
>>An-/Abmeldung und Suchfunktion unter:
>>http://www.glengamoi.com/mailman/listinfo/asp.net
>>
>>
_______________________________________________
Asp.net Mailingliste, Postings senden an:
[email protected]
An-/Abmeldung und Suchfunktion unter:
http://www.glengamoi.com/mailman/listinfo/asp.net
_______________________________________________
Asp.net Mailingliste, Postings senden an:
[email protected]
An-/Abmeldung und Suchfunktion unter:
http://www.glengamoi.com/mailman/listinfo/asp.net