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.
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
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.
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