У меня есть два ASP.NET ListBoxex в пользовательском контроле.Событие привязки данных запускается один раз.Я уверен, и я действительно проследил.но listbox всегда возвращает первое значение!это странно для меня.и я не знаю, как это исправить.Спасибо за помощь.Вот источник контроля пользователя:
<asp:UpdatePanel ID="updPanel" runat="server" ChildrenAsTriggers="true">
<ContentTemplate>
<table class="style1">
<tr>
<td align="left" dir="rtl" valign="top" width="250">
<asp:ListBox ID="lst2" runat="server" DataTextField="Title"
DataValueField="Value" Font-Names="Tahoma" Font-Size="Small" Height="306px"
Width="230px"></asp:ListBox>
</td>
<td align="right" dir="rtl" width="30">
<table>
<tr>
<td width="25">
<asp:Button ID="btnAdd" runat="server" meta:resourcekey="btnAddResource1"
Text=">" Width="28px" />
</td>
</tr>
<tr>
<td>
<asp:Button ID="btnAddAll" runat="server" meta:resourcekey="btnAddAllResource1"
Text=">>" Width="28px" />
</td>
</tr>
<tr>
<td>
<asp:Button ID="btnRemove" runat="server" meta:resourcekey="btnRemoveResource1"
Text="<" Width="28px" />
</td>
</tr>
<tr>
<td>
<asp:Button ID="btnRemoveAll" runat="server"
meta:resourcekey="btnRemoveAllResource1" Text="<<" Width="28px" />
</td>
</tr>
</table>
</td>
<td align="left" valign="top" width="250">
<asp:ListBox ID="lst1" runat="server" DataTextField="Title"
DataValueField="value" Font-Names="Tahoma" Font-Size="Small" Height="306px"
Width="230px"></asp:ListBox>
</td>
</tr>
</table>
</ContentTemplate>
, и вот мой код.
Public Property UserName As String
Get
Return ViewState("UserName")
End Get
Set(ByVal value As String)
ViewState("UserName") = value
End Set
End Property
Protected Sub btnAdd_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnAdd.Click
MsgBox(lst2.SelectedItem.Text)
End Sub
Public Sub BindUserNotInGroups()
Dim objSecurity As New Negso.Security.SecurityHelper()
Dim dt As New DataTable
dt = objSecurity.GetNonGroupsForUser(UserName)
lst2.DataValueField = dt.Columns("SID").ColumnName
lst2.DataTextField = dt.Columns("Name").ColumnName
lst2.DataSource = dt
lst2.DataBind()
End Sub
''' <summary>
''' Binds the user not in groups.
''' </summary>
''' <remarks></remarks>
Public Sub BindUserInGroups()
Dim objSecurity As New Negso.Security.SecurityHelper()
'Dim k = objSecurity.GetGroupsForUser(UserName).Rows.Count
Dim dt As New DataTable
dt = objSecurity.GetGroupsForUser(UserName)
lst1.DataValueField = dt.Columns("SID").ColumnName
lst1.DataTextField = dt.Columns("Name").ColumnName
lst1.DataSource = dt
lst1.DataBind()
End Sub
Я вызываю функции привязки, когда свойство Username будет установлено:*
Public Property UserName() As String
Get
Return ViewState("UserName")
End Get
Set(ByVal value As String)
ViewState("UserName") = value
userGroups1.UserName = ViewState("UserName")
userGroups1.BindUserInGroups()
userGroups1.BindUserNotInGroups()
'ListBox3.UserName = ViewState("UserName")
End Set