Jana_ Geschrieben 31. Mai 2010 Geschrieben 31. Mai 2010 Hallo, ich habe noch ein weiteres Problem bei dem ich einfach nicht weiter komme. Ich habe auf meiner asp-Anwendung ein DataGridView. Dies zeigt anfangs halt Labels an. Als EditItemTemplate habe ich eine DropDownListe sowie eine Textbox und einen Button. (Soll insgesamt eine Art editierbare DropdownListe darstellen die es ja so nicht bei asp gibt). Er zeigt das auch brav so an wie ich mir das vorstelle. (Wenn ein gewisses Item der DDL ausgewählt wird erscheint die tbx...) Problem ist jetzt nur das DataBinding. Er speichert einfach nur das was in der tbx steht. Die DropDownListe wird vollkommen ignoriert. Entferne ich die tbx aus den EditItemTemplates bzw. nur die "DataBindingAnweisung" so wird das aus der DDL gespeichert. Mir ist schon klar das er also immer nur den "letzten" Komponenten zum Speichern nutz. Ich brauche aber entweder oder. Hat jemand ne Idee? Danke Zitieren
Jana_ Geschrieben 31. Mai 2010 Autor Geschrieben 31. Mai 2010 mh, so in der Art: <edititemtemplate> <asp:DropDownList id="dd_list" selectedValue='<%#Bind("Name")%>'runat="server"/> <asp:TextBox id="tbx" Text='<%#Bind("Name")%>'runat="server"/> <asp:Button id="btn" runat="server"/> </edititemtemplate> Zitieren
Jana_ Geschrieben 1. Juni 2010 Autor Geschrieben 1. Juni 2010 genauer gesagt, sieht der orignal-code so aus: <asp:TemplateField HeaderText="Feiertag"> <ItemTemplate> <asp:Label ID="lbl_holiday" runat="server" Text='<%# Eval("Feiertag") %>'></asp:Label> </ItemTemplate> <EditItemTemplate> <asp:DropDownList ID="dd_holiday" runat="server" SelectedValue='<%#Bind("Feiertag") %>' AppendDataBoundItems="true" DataSourceID="sqlDS_day" DataValueField="Feiertag" AutoPostBack="True" OnSelectedIndexChanged="dd_holiday_change"/> <asp:TextBox ID="tb_new" runat="server" Text='<%#Bind("Feiertag") %>'DataSourceID="sqlDS_day" DataValueField="Feiertag" Visible="False" /> <asp:ImageButton ID="ibtn_back" runat="server" ImageUrl="~/Images/Back.gif" Visible="False" onclick="ibtn_back_click"/> </EditItemTemplate> </asp:TemplateField> er nimmt anscheinden nur das zuletzt hinzugefügte und "bindet" das an die DB. Ich habe schon versucht das ganze über RowEditing zu lösen, aber es will einfach nicht klappen. protected void gv_general_RowUpdating(object sender, GridViewUpdateEventArgs e) { String holiday = ""; String date = ((Label)gv_general.Rows[gv_general.EditIndex].FindControl("lbl_date")).Text; if (((TextBox)gv_general.Rows[gv_general.EditIndex].FindControl("tb_new")).Visible) { holiday = ((TextBox)gv_general.Rows[gv_general.EditIndex].FindControl("tb_new")).Text; } else { holiday = ((DropDownList)gv_general.Rows[gv_general.EditIndex].FindControl("dd_holiday")).SelectedItem.Text; } db_update(date,holiday); } und dann noch die update_methode: protected void db_update(String _date, String _holiday) { String update_string = "UPDATE tbl_Feiertage SET Feiertag = '"+_holiday+"' WHERE Datum = '"+_date+"'"; SqlConnection sqlConnection = new SqlConnection("server=xxx;uid=xxx;pwd=xxx;database=xxx"); SqlCommand sqlCommand = null; try { sqlCommand = new SqlCommand(update_string); sqlCommand.Connection = sqlConnection; sqlConnection.Open(); sqlCommand.ExecuteNonQuery(); } catch (SqlException exc) { lbl_fault.Text = exc.Errors[0].Number.ToString(); } finally { sqlCommand.Connection.Close(); } } Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.