Okay, also Fragen, die ich habe den Wert einer Dropdownlist bekommen, die innerhalb eines Template ist, wenn mein Gridview aktualisieren. Ursprünglich habe ich das RowCommand-Ereignis verwendet, um den Befehlsnamen zu überprüfen und dann die entsprechende Aufgabe auszuführen (update/delete), aber ich hatte Probleme, das Ereignis zweimal auszulösen, also habe ich es für separate Ereignisse (RowUpdating, RowDeleting) ausgeschaltet. Danach gibt FindControl jedes Mal null zurück. Nur zur Information: Die Gridview befindet sich in einem UpdatePanel mit AsyncPostBackTriggers für RowEditing-, RowUpdating- und RowDeleting-Ereignisse.Problem zu finden, Web-Kontrolle innerhalb von Gridview Template
Hier ist meine Template innerhalb des Gridview:
<asp:TemplateField HeaderText="Type">
<ItemTemplate>
<asp:Label
ID="lblMedTypeEdit"
Text='<%# Bind("medDesc") %>'
runat="server">
</asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:DropDownList
ID="ddlMedTypeEdit"
DataSourceID="srcMedTypes"
SelectedValue='<%# Bind("medtype") %>'
runat="server"
DataTextField="medDesc"
DataValueField="medCode">
</asp:DropDownList>
</EditItemTemplate>
</asp:TemplateField>
Hier ist der Code ich innerhalb von
Protected Sub gvCurrentMeds_RowUpdating(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewUpdateEventArgs) Handles gvCurrentMeds.RowUpdating
Dim intRowIndex As Integer = e.RowIndex
Dim ddlMedType As DropDownList = CType(Me.gvCurrentMeds.Rows(intRowIndex).Cells(1).FindControl("ddlMedTypeEdit"),DropDownList)
End Sub
mit Ich habe auch versucht, eine rekursive Funktion mit der Steuerung zu finden (siehe unten) , aber es gibt immer noch null zurück.
Public Function FindControlRecursive(ByVal root As Control, ByVal id As String) As Control
If root.ID = id Then
Return root
End If
For Each c As Control In root.Controls
Dim t As Control = FindControlRecursive(c, id)
If Not t Is Nothing Then
Return t
End If
Next
Return Nothing
End Function
Ich war tatsächlich in der Lage, statt RowCommand Ereignis zu verwenden, aber es wäre noch schön zu wissen, wie dies zu tun. :) – Brian