Zum Inhalt springen

Zwei EditItemTemplates im DataGridView


Empfohlene Beiträge

Geschrieben

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

Geschrieben

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>

Geschrieben

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();

            }


        }

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...