1
如果我有以下ListView
,我如何將SelectedIndexChanged
事件偵聽器附加到DropDownList
,以便我可以對各個對象執行命令?想象一下,我有一個新用戶列表,我想通過從DropDownList
中選擇組來添加他們到一個用戶組。訪問控件內部ASP.NET視圖控件(事件處理)
<asp:ListView ID="NewUsers" runat="server" DataSourceID="NewUsersSDS" DataKeyNames="ID">
<LayoutTemplate>
<asp:Table ID="groupPlaceholder" runat="server"><asp:TableRow></asp:TableRow></asp:Table>
</LayoutTemplate>
<GroupTemplate>
<asp:TableCell ID="itemPlaceholder" runat="server"></asp:TableCell>
</GroupTemplate>
<ItemTemplate>
<asp:Table ID="NewUsersTable" runat="server" Width="32%" CssClass="inlineTable">
<asp:TableRow>
<asp:TableCell Width="100px"><%# Eval("FullName").ToString.Trim()%></asp:TableCell>
<asp:TableCell>
<asp:HiddenField ID="RowIndex" runat="server" Value="<%# Container.DisplayIndex %>" />
<asp:DropDownList ID="UserGroupSelect" runat="server" DataSourceID="UserGroupSelectSDS" DataValueField="ID" DataTextField="UserGroup"
OnSelectedIndexChanged="UserGroupSelect_SelectedIndexChanged" AutoPostBack="True">
</asp:DropDownList>
</asp:TableCell>
</asp:TableRow>
</asp:Table>
</ItemTemplate>
</asp:ListView>
我一直在訪問__View控件內部控件的問題。我在幾個地方看過,你可以通過NewUsers.FindControl([ControlID as String])
訪問它們,但這似乎不適合我。我想這就是所謂的動態控制?不太確定,感覺有點失落。
與往常一樣,您的幫助非常感謝。 ;)
附加信息/代碼
'Now working code, thanks to James :)
Protected Sub ItemBind(ByVal sender As Object, ByVal e As ListViewItemEventArgs) Handles NewUsers.ItemDataBound
Dim lv As ListView = DirectCast(sender, ListView)
If e.Item.ItemType = ListViewItemType.DataItem Then
lv.DataKeys(e.Item.DataItemIndex).Value.ToString() 'get the datakey
End If
End Sub
Protected Sub UserGroupSelect_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs)
Dim RowIndex As Integer = CInt(DirectCast(DirectCast(sender, DropDownList).Parent.FindControl("RowIndex"), HiddenField).Value)
Dim pk As Integer = CInt(NewUsers.DataKeys(RowIndex)("ID"))
Try
MessageBox("Update key " + pk.ToString, "Update Key") 'Custom js "alert" box function
Catch ex As Exception
MessageBox("Something went wrong, is the update key empty?")
End Try
End Sub
嗯,那麼,這是否代碼頂塊去了?在ListView的'ItemDataBound'事件裏面?因爲'DropDownBox'控件當然沒有'ItemCommand'屬性。我仍然無法正常工作。在我嘗試了更多的想法之後,我會稍微發佈一些代碼。 – Chiramisu
是的,'ItemDataBound'對它來說是個好地方。顯然,你不需要獲得'ListViewItem'的部分,因爲你已經擁有它了。 –
對不起,您需要添加'AutoPostBack =「true」' –