Announcement

Collapse
No announcement yet.

DataGrid: Zugriff auf Werte mittels Button

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • DataGrid: Zugriff auf Werte mittels Button

    Hallo,

    ich habe mal eine prinzipielle Frage:

    Das Editieren in DataGrids ist kein Problem.

    Was ich aber gerne machen würde, ist in einem DataGrid in jeder Zeile (jedem Datensatz) einen Button anzulegen, welcher den entsprechenden Datensatz in einem eigenen Control öffnet. Dazu müßte ich aber irgendwie z. B. die ID das Datensatzes mit übergeben.

    Mal ein wenig Quellcode:

    <asp:datagrid id="DataGridRequests" runat="server" AutoGenerateColumns="False" CellPadding="1">
    <br>
    ..
    <br>
    <Columns>
    <br>
    <asp:BoundColumn Visible="False" DataField="IDRequest" HeaderText="ID"></asp:BoundColumn>
    <br>
    <asp:TemplateColumn HeaderText="Bearbeiten">
    <br>
    <ItemTemplate>
    <br>
    <asp:Button ID="DetailsButton" Text="Bearbeiten" Runat="server"></asp:Button>
    <br>
    </ItemTemplate>
    <br>
    </asp:TemplateColumn>
    <br>
    </Columns>
    <br>
    </asp:datagrid>

    Soweit so gut. Über Edit Column im DataGrid kann ich nun auf den Button zugreifen.

    Im Code-Behind habe ich dazu noch:

    DataGridRequests.DataKeyField = "IDRequest";

    Was genau mache ich nun aber damit?

    Bei Klick auf den Button soll z. B. per Server.Transfer ein anderes Control geöffnet werden das dann die Details des Datensatzes mit der entsprechenden ID anzeigt.

    Wenn jemand eine Idee oder ein Beispiel in C# oder VB weiß wäre ich dankbar wenn er es mir mitteilen würde.

    Grüße

    Reiko

  • #2
    Hallo,

    wenn im DataGrid-Properties-Editor für eine Spalte der Button-Typ <b>PushButton</b> ausgewählt wurde, steht die Ereignisbehandlungsmethode für das Anklicken des Edit-Buttons (<i>EditCommand</i>) zur Verfügung. In Kombination mit der DataGrid-Eigenschaft <b>DataKeys</b> kann innerhalb dieser Ereignisbehandlungsmethode der Primärschlüsselwert des ausgeählten Datensates ermittelt werden:
    <pre>
    Private Sub DataGrid1_EditCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs ) _
    Handles DataGrid1.EditCommand
    Dim sKeyValue As String = Me.DataGrid1.DataKeys(e.Item.ItemIndex).ToString()
    Me.Label1.Text = "DataGrid1_EditCommand für " + sKeyValue
    End Sub
    </pre>
    Wenn der Primärschlüsselwert erst einmal feststeht, kann dieser an das zweite ASP.NET Web Form übergeben werden (Session-Variable, QueryString etc.)

    Comment


    • #3
      Hallo Andreas,

      erstmal vielen Dank für Deine Hinweise.

      Ich werde das Ganze heute mal ausgiebig ausprobieren und denke mal mit Deinen Tipps auch zum Erfolg zu kommen :-)

      Bye<br>
      Reik

      Comment


      • #4
        Hallo Andreas,

        ich nerve wohl inzwischen?? :-( Sorry

        Also das ganze klappte letzte Woche reibungslos .. bis dieses Problem mit dem Event-Button auftauchte. Damit verbunden auch andere Probleme die nach und nach aufzutauchen scheinen .. die es vorher nicht gab .. außer ich leide bereits an Alzheimer ;-)

        Mal wieder .. ein Bild:

        http://www.reikostaudacher.de/images/Datagrid-EditTemplate.jpg

        Dort sollte über 'Properties' ein Eintrag 'Edit Template >' vorhanden sein .. und noch ein Eintrag 'End Template editing'?

        Ist plötzlich auch weg. Der HTML-Quellcode zum Datagrid:

        <pre>
        <asp:datagrid id="DataGridRequests" runat="server" AutoGenerateColumns="False" CellPadding="1">
        <AlternatingItemStyle BackColor="#E0E0E0"></AlternatingItemStyle>
        <ItemStyle Wrap="False" VerticalAlign="Top"></ItemStyle>
        <HeaderStyle BackColor="#D0D0D0"></HeaderStyle>
        <Columns>
        <asp:BoundColumn Visible="False" DataField="IDRequest" HeaderText="ID"></asp:BoundColumn>
        <asp:BoundColumn DataField="Date" HeaderText="Datum"></asp:BoundColumn>
        <asp:BoundColumn DataField="NameFirst" HeaderText="Vorname"></asp:BoundColumn>
        <asp:BoundColumn DataField="NameLast" HeaderText="Nachname"></asp:BoundColumn>
        <asp:BoundColumn DataField="CityCode" HeaderText="PLZ"></asp:BoundColumn>
        <asp:BoundColumn DataField="City" HeaderText="Stadt"></asp:BoundColumn>
        <asp:BoundColumn DataField="Message" HeaderText="Nachricht"></asp:BoundColumn>
        <asp:EditCommandColumn ButtonType="PushButton" HeaderText="Löschen" EditText="Löschen">
        </asp:EditCommandColumn>
        </Columns>
        </asp:datagrid>
        </pre>

        Ich glaub ich fasse bald kein Visual Studio mehr an

        Comment

        Working...
        X