Please help...ASP.NET

Imam jednu gridwiev kontrolu na kojoj mi šteka update s datumom(datetime), pa molim savjet!
Evo kod od update —>

protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
    {
        int index = GridView1.EditIndex;
        GridViewRow row = GridView1.Rows[index];
        int idSeminara = Convert.ToInt32(GridView1.DataKeys[e.RowIndex].Value);
        string naziv = ((TextBox)row.Cells[2].Controls[0]).Text.ToString().Trim();
        string opis = ((TextBox)row.Cells[3].Controls[0]).Text.ToString().Trim();
        string predavac = ((TextBox)row.Cells[4].Controls[0]).Text.ToString().Trim();
        DateTime datum = DateTime.Parse(((TextBox)(row.Cells[6].Controls[0])).Text);


        string sql = "UPDATE Seminari SET naziv='" + naziv + "',opis='" + opis + "',predavac='" + predavac + "',datum='" + datum + "' WHERE idSeminara=" + idSeminara;


        SqlCommand cmd = new SqlCommand(sql, con);
        con.Open();
        int temp = cmd.ExecuteNonQuery();
        GridView1.EditIndex = -1;
        con.Close();
        if (temp == 1)
        {

            lblMessage.Text = "Izmjene izvršene uspješno! ";
        }
        else
        {
            lblMessage.Text = "Izmjene nisu izvršene! ";
        }
        GridView1.EditIndex = -1;
        FillGrid();

Prvo što mi upada u oči je to da ideš datum formata DateTime spajati u string. Moguće da je tu greška.
Preporučujem ti da ovdje napraviš jednostavno datum.ToString(“yyyy-MM-dd”) ili koji već format je tebi potreban.

Jesi probao debugirat da vidiš gdje točno puca?

Javlja grešku: “The conversion of a varchar data type to a datetime data type resulted in an out-of-range value.
The statement has been terminated.”

Znam da je problem u ovom retku:
DateTime datum = DateTime.Parse(((TextBox)(row.Cells[6].Controls[0])).Text);

Samo ne znam kako točno napisat taj redak.

To ti je greška od SQL upita. Pretpostavljam da je datum krivog formata pa ti SQL odmah baca ovo. Polje koje si ti postavio u bazi podataka je datetime umjesto date, tako da je potrebno upisati i sate odnosno:
datum.ToString(“yyyy-MM-dd HH:mm:ss”). To bi moglo riješiti problem.

U slučaju da se koristi neki format koji nije moguće samo tako prebaciti u string, e onda moraš koristiti datum.ParseExact koji se opisuje na http://msdn.microsoft.com/es-es/library/w2sa9yss(v=vs.100).aspx gdje ćeš pretvoriti datum u pravi format dateTime-a i onda ga samo pozvati u SQL-u sa datum.ToString().

Izmjenio u bazi iz datetime u date i opet ništa. Kad skinem redak “datum” sve štima, al s njim nikako???

Kakav input dobivaš za datetime tj. što sadrži: ((TextBox)(row.Cells[6].Controls[0])).Text. Pretpostavljam da je ovdje problem jer nije u dobrom formatu.

TextBox = "DataboundField"
TextBox = BoundFieldProperties —> HeaderText = Datum
DataField = datum
(row.Cells[6] = Datum
Controls[0] = “Edit” na gridu

source = <asp:BoundField DataField=“datum” HeaderText=“Datum” />

Mislio sam kakav string dobivaš ovdje. Ti izgleda da povlačiš nešto potpuno krivo za datum tj. da uopće ne dobivaš nikakav string u datumu., a ako dobiješ tekst “Datum” (ako dobro vidim), to se ne može pretvoriti u nekakav datum jer niti ne sadrži u sebi datum već obična slova tj. riječ.


Copyright © 2020 WM Forum - AboutContact - Sponsored by: Mydataknox & Profit Monkey