NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
Avatar
Stano Klanduch:29.4.2016 10:53

Zdravim,

snazim sa prekopat Editable Nested GridView z CodeProjektu.
Tam je to urobene a Acess a ja to musim zmenit do MSSQLka.
Napr: nameisto

protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
   {
       //Get the values stored in the text boxes
       string strCompanyName = ((TextBox)GridView1.Rows[e.RowIndex].FindControl("txtCompanyName")).Text;
       string strContactName = ((TextBox)GridView1.Rows[e.RowIndex].FindControl("txtContactName")).Text;
       string strContactTitle = ((TextBox)GridView1.Rows[e.RowIndex].FindControl("txtContactTitle")).Text;
       string strAddress = ((TextBox)GridView1.Rows[e.RowIndex].FindControl("txtAddress")).Text;
       string strCustomerID = ((Label)GridView1.Rows[e.RowIndex].FindControl("lblCustomerID")).Text;

       try
       {
           //Prepare the Update Command of the DataSource control
           string strSQL = "";
           strSQL = "UPDATE Customers set CompanyName = '" + strCompanyName + "'" +
                    ",ContactName = '" + strContactName + "'" +
                    ",ContactTitle = '" + strContactTitle + "'" +
                    ",Address = '" + strAddress + "'" +
                    " WHERE CustomerID = '" + strCustomerID + "'";
           AccessDataSource1.UpdateCommand = strSQL;
           AccessDataSource1.Update();
           ClientScript.RegisterStartupScript(GetType(), "Message", "<SCRIPT LANGUAGE='javascript'>alert('Customer updated successfully');</script>");
       }
       catch { }
   }

som to upravil na

protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
 {
     string strConnString = ConfigurationManager.ConnectionStrings["PersonalConnectionString"].ConnectionString;
     SqlConnection con = new SqlConnection(strConnString);

     //Získa hodnoty uložené v textových poliach
     string strNaradie = ((TextBox)GridView1.Rows[e.RowIndex].FindControl("txtNaradie")).Text;
     string strKusov = ((TextBox)GridView1.Rows[e.RowIndex].FindControl("txtkusov")).Text;
     string strCena = ((TextBox)GridView1.Rows[e.RowIndex].FindControl("txtcena")).Text;
     string strCenaCelkom = ((TextBox)GridView1.Rows[e.RowIndex].FindControl("txtcenaCelkom")).Text;
     string strSklDoklad = ((Label)GridView1.Rows[e.RowIndex].FindControl("lblIdPohybu")).Text;

     try
     {
         //Pripraví príkaz Aktualizácia ovládacieho prvku DataSource
         string strSQL = "";
         strSQL = "UPDATE TempSklPohyby SET Naradie = '" + strNaradie + "'" +
                  ",kusov = '" + strKusov + "'" +
                  ",cena = '" + strCena + "'" +
                  ",cenaCelkom = '" + strCenaCelkom + "'" +
                  " WHERE sklDoklad = '" + strSklDoklad + "'";
         SqlCommand cmd = new SqlCommand(strSQL, con);
         con.Open();
         cmd.ExecuteNonQuery();
         con.Close();
         ClientScript.RegisterStartupScript(GetType(), "Message", "<SCRIPT LANGUAGE='javascript'>alert('Položka príjemky úspešne aktualizovaná');</script>");
     }
     catch { }
 }

Ale po stlacení tlacidla Update to vyhodí chybu
Updating is not supported by data source PohybySqlDataSource unless UpdateCommand is specified

v ASPX mam PohybySqlDataSource kde je len SELECT

<asp:SqlDataSource ID="PohybySqlDataSource" runat="server" ConnectionString="<%$ ConnectionStrings:PersonalConnectionString %>"
       SelectCommand="SELECT TempSklPohyby.IdPohybu, TempSklPohyby.Naradie, TempSklPohyby.kusov, TempSklPohyby.Cena, TempSklPohyby.cenaCelkom
           FROM TempSklPohyby  WHERE TempSklPohyby.sklDoklad = @sklDoklad ORDER BY TempSklPohyby.IdPohybu  ">
       <SelectParameters>
           <asp:QueryStringParameter DefaultValue="1" Name="sklDoklad" QueryStringField="Prijemka" Type="Int32" />
       </SelectParameters>
   </asp:SqlDataSource>

Ako to rozbehat ?

Dakujem

 
Odpovědět
29.4.2016 10:53
Avatar
Odpovídá na Stano Klanduch
Michal Štěpánek:29.4.2016 11:30

V první řadě bys měl používat parametry, jinak ti šikovný záškodník zruší celou DB
Zkoušel sis v SqlDataSource udělat UpdateCommand? Podle mě jdeš na to zbytečně složitě. Udělej si SqlDataSource se všemi "commandy" a nastav v GridView povolení úprav. Pak se nemusíš trápit s příkazem...

Nahoru Odpovědět
29.4.2016 11:30
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Odpovídá na Michal Štěpánek
Stano Klanduch:29.4.2016 14:14

No dufal som, ze len znenim kod v codebehind z pripojenia z Acessu na SQL server a hotovo. Preco to pri acesse nevyhaduje ziadne chyby a to iste s pripojenim na SQLServer vyhaduje chybu

Updating is not supported by data source PohybySqlDataSource unless UpdateCommand is specified

 
Nahoru Odpovědět
29.4.2016 14:14
Avatar
Odpovídá na Stano Klanduch
Michal Štěpánek:30.4.2016 9:45

Přejít z Accessu na MSSQL není tak prosté, bo v Accessu se připojuješ pomocí OLEDB ovladače, který podporuje trošku jiný způsob přístupu než klasické MSSQL. Ale podle mě by mělo stačit jednoduše si naklikat SqlDataSource a povolit úpravy v GridView...
Ale HLAVNĚ, pokud budeš chtít s DB pracovat v codebehind, používej PARAMETRY

Nahoru Odpovědět
30.4.2016 9:45
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 4.