none
GridView - aspx - DropDown RRS feed

  • Frage

  • Hallo,

    ich will mich mal etwas in asp einarbeiten.

    Jetzt habe ich das Problem das ich ein GridView habe mit SQL Verbindung. Die Verbindung klappt ich kann auch die Daten sehen.

    Jetzt wollte ich ein Feld als Dropdown, damit es auch änderbar ist, anzeigen. Ich kann es auch einfügen und erhalten die Meldung "Das DropDown Element ist kein bekanntes Element. Ursache hierfür ein Kompilierungsfehler in der Webseite oder das Fehlen der Datei "web.config" sein.

    Die Datei web.config ist vorhanden.

    Füge ich es außerhalb vom GridView ein dann funktioniert es.

    Kann man die Dropdown Option nicht nutzen im GridView oder gibt es ein Trick?

    Mein Gedanke war das ich es anzeigen lasse wie in einer normalen C# Maske das der User beim bearbeiten nur die verfügbaren Inhalte auswählen kann und der IndexWert gespeichert wird.

    Danke

    Ralf

    Sonntag, 7. Oktober 2018 17:45

Antworten

  • Hi,
    ein DropDownList-Steuerelement in einem GridView kann man folgendermaßen nutzen.

    html:

    <%@ Page Language="vb" AutoEventWireup="false" CodeBehind="WebForm02.aspx.vb" 
      Inherits="WebApplication1.WebForm02" %>
    
    <!DOCTYPE html>
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
      <title></title>
    </head>
    <body>
      <form id="form1" runat="server">
        <div>
          <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" 
            DataSource="<%# Me.Daten %>">
            <Columns>
              <asp:BoundField DataField="ID" HeaderText="ID" />
              <asp:TemplateField HeaderText="Master">
                <ItemTemplate>
                  <asp:DropDownList ID="DropDownList1" runat="server" 
                    DataSource="<%# Me.MasterDaten %>"
                    DataValueField="ID" DataTextField="Info" 
                    SelectedValue='<%# Bind("FK") %>'/>
                </ItemTemplate>
              </asp:TemplateField>
            </Columns>
          </asp:GridView>
        </div>
      </form>
    </body>
    </html>

    Dazu der CodeBehind:

    Public Class WebForm02
      Inherits System.Web.UI.Page
    
      Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    
      End Sub
    
      Private Sub form1_PreRender(sender As Object, e As EventArgs) Handles form1.PreRender
        Me.DataBind()
      End Sub
    
      Public ReadOnly Property Daten As List(Of Data)
        Get
          Return GetData()
        End Get
      End Property
    
      Public ReadOnly Property MasterDaten As List(Of MasterData)
        Get
          Return GetMasterData()
        End Get
      End Property
    
      Private Function GetData() As List(Of Data)
        Dim liste As New List(Of Data)
        For i = 1 To 10
          liste.Add(New Data With {.ID = i, .FK = (i Mod 3) + 1})
        Next
        Return liste
      End Function
    
      Private Function GetMasterData() As List(Of MasterData)
        Dim liste As New List(Of MasterData)
        For i = 1 To 3
          liste.Add(New MasterData With {.ID = i, .Info = $"Master {i}"})
        Next
        Return liste
      End Function
    
      Public Class Data
        Public Property ID As Integer
        Public Property FK As Integer
      End Class
    
      Public Class MasterData
        Public Property ID As Integer
        Public Property Info As String
      End Class
    
    End Class


    --
    Viele Grüsse
    Peter Fleischer (ehem. MVP für Developer Technologies)
    Meine Homepage mit Tipps und Tricks

    Montag, 8. Oktober 2018 04:59