Laden...

Text aus einer TextBox in einem EditItemTemplate ausgeben

Erstellt von Steven85 vor 8 Jahren Letzter Beitrag vor 8 Jahren 1.228 Views
Steven85 Themenstarter:in
99 Beiträge seit 2011
vor 8 Jahren
Text aus einer TextBox in einem EditItemTemplate ausgeben

Hallo zusammen, habe ein DataGrid mit mehrere TemplateColumns.


<asp:DataGrid ID="dgrDatenbankzuordnungen" runat="server" Width="100%" AutoGenerateColumns="False"
                                    Caption="Datenbankzuordnungen" BorderWidth="1px" BorderStyle="Solid" BorderColor="#E6E6E6"
                                    PageSize="5" OnItemCommand="dgrDatenbankzuordnungen_ItemCommand">
                                    <AlternatingItemStyle BackColor="#F8F8F8" />
                                    <ItemStyle BackColor="#EEEEEE" />
                                    <Columns>
                                        <asp:TemplateColumn HeaderText="ID">
                                            <ItemTemplate>
                                                <asp:Label ID="lblID" runat="server" Text='<%# Eval("ID") %>' />
                                            </ItemTemplate>
                                        </asp:TemplateColumn>
                                        <asp:TemplateColumn HeaderText="Alias">
                                            <EditItemTemplate>
                                                <asp:TextBox ID="edAlias" runat="server" Text='<%# Eval("Alias") %>' Style="width: 100%;" />
                                            </EditItemTemplate>
                                            <ItemTemplate>
                                                <asp:Label ID="lblAlias" runat="server" Text='<%# Eval("Alias") %>' />
                                            </ItemTemplate>
                                        </asp:TemplateColumn>
                                        <asp:TemplateColumn HeaderText="ConnectionString">
                                            <EditItemTemplate>
                                                <asp:TextBox ID="edConnectionString" runat="server" Text='<%# Eval("ConnectionString") %>'
                                                    Style="width: 100%;" />
                                            </EditItemTemplate>
                                            <ItemTemplate>
                                                <asp:Label ID="lblConnectionString" runat="server" Text='<%# Eval("ConnectionString") %>' />
                                            </ItemTemplate>
                                        </asp:TemplateColumn>
                                        <asp:TemplateColumn>
                                            <ItemTemplate>
                                                <div style="white-space: nowrap;">
                                                    <asp:Button ID="btnEdit" runat="server" CommandName="Edit" Text="" class="btn24_Stift"
                                                        ToolTip="Datenbank bearbeiten, bzw. Bearbeitung abbrechen" />
                                                    <asp:Button ID="btnUpdate" runat="server" CommandName="Update" Text="" class="btn24_Haken"
                                                        ToolTip="Änderrungen übernehmen" />
                                                    <asp:Button ID="btnDeleteDBAssignment" runat="server" CommandName="Delete" Text=""
                                                        class="btn24_RedX" ToolTip="Zuordnung entfernen" OnClientClick="javascript: return confirm('Zuordnung wirklich unwiderruflich entfernen?');" />
                                                </div>
                                            </ItemTemplate>
                                        </asp:TemplateColumn>
                                    </Columns>
                                    <HeaderStyle Font-Bold="True" BackColor="White" />
                                    <PagerStyle HorizontalAlign="Center" ForeColor="Black" BackColor="#999999" Mode="NumericPages" />
                                </asp:DataGrid>

Mit den Buttons in der letzten Spalte löse ich das

dgrDatenbankzuordnungen_ItemCommand

Event aus, nur irgendwie komme ich nicht an den Text in dem DataGrid. Mit

dgrDatenbankzuordnungen.Items[e.Item.ItemIndex].Cells[index].Text

bekomme ich nur einen leeren String aus allen Zelle. Die Datasource ist ebenfalls null, obwohl ich diese gesetzt habe und auch alles korrekt dargestellt wird. Ich könnte natürlich die Source in der Session speichern, jedoch brauche ich den aktuellen Text aus der Textbox wenn ich die Felder editiere.

Ich hoffe ihr könnt mir einigermaßen Folgen und vor allem helfen.

D
615 Beiträge seit 2009
vor 8 Jahren

Hallo Steven85

Um an die Controls innerhalb des ItemTemplates zu kommen musst du folgendermassen vorgehen:


TextBox edAlias= (TextBox)e.Item.FindControl("edAlias");

Beste Grüsse

Diräkt

Steven85 Themenstarter:in
99 Beiträge seit 2011
vor 8 Jahren

Absolut perfekt. Vielen Dank. 😃

Kann ich wenn ich in dem Item_Command Event bin und dort die Datenbankaktualisierung mache, eine Messagebox aufrufen die sowas beinhaltet wie "Sind sie sicher?".

Die Javascript Funktion confirm('...') kenne ich, jedoch ist da das Problem das ich ja bereits in der Codebehind bin. Hoffe sowas ist möglich das ich beim klick auf nein oder abbrechen aus der Codebehind rausspringen kann.

D
615 Beiträge seit 2009
vor 8 Jahren

Hallo Steven85

Kann ich wenn ich in dem Item_Command Event bin und dort die Datenbankaktualisierung mache, eine Messagebox aufrufen die sowas beinhaltet wie "Sind sie sicher?"

Also eine MessageBox gibts nicht 😉. Dein Vorhaben ist nicht ganz trivial.

Der einfachste Weg wäre:
=> Den "Update" oder "Save" (Link,Button whatever) eine client Methode hinzufügen, z.B. confirm.

Alternativ geht auch:
=> Serverseitig kannst du ein Script registrieren. (Um bspw. im Item_Command Event dann ein Confirm anzuzeigen oder was auch immer)
( Script Manager
=> Nach dem du das confirm result hast, kannst du ein WebService aufrufen (oder PageMethod) um dann die Aktion durchzuführen.

Die Javascript Funktion confirm('...') kenne ich, jedoch ist da das Problem das ich ja bereits in der Codebehind bin. Hoffe sowas ist möglich das ich beim klick auf nein oder abbrechen aus der Codebehind rausspringen kann.

Sowas wie (pseudo):

'.....
messageBox.Show("...");
if(messageBox.Result == "Ok")
{
   ...
}
'.....

Sowas geht nicht, wird nie gehen, und ist Winform style, hat mit Web nichts zutun.
Du arbeitest im Web mit Callbacks für solche Szenarien...

Beste Grüsse

Diräkt