2014-01-13 3 views
1

Я делаю эту check_Clicked процедуру для обновления ListView, но обновление, похоже, не работает после exec cmd.ExecuteNonQuery(); Когда я отлаживаю, я вижу значение keyId, которое является правильным идентификатором в моей таблице, но по неизвестной причине оно не обновлялось. Любые подсказки почему? Благодаряничего не обновляется после выполнения cmd.ExecuteNonQuery()

protected void Check_Clicked(Object sender, EventArgs e) 
{ 
    int keyId = 0; 

    foreach (ListViewDataItem item in ListView1.Items) 
    { 
     CheckBox MyCheckBox = (CheckBox)item.FindControl("MyCheckBox"); 
     if (MyCheckBox.Checked) 
     { 
      keyId = Convert.ToInt32(ListView1.DataKeys[item.DataItemIndex].Value); 
     } 
    } 

    SqlConnection con = new SqlConnection(System.Configuration.ConfigurationManager. 
     ConnectionStrings["ConnectionString"].ConnectionString); 

    //======= Insert Query. 
    string cmdText = "UPDATE Doctor SET [email protected],[email protected], 
     [email protected],[email protected] WHERE [email protected]"; 

    SqlCommand cmd = new SqlCommand(cmdText, con); 

    cmd.Parameters.AddWithValue("@clientName", Convert.ToString(Session["nom"])); 
    cmd.Parameters.AddWithValue("@isAvailable", "False"); 

    cmd.Parameters.AddWithValue("@apointementId", keyId); 

    if (con.State == ConnectionState.Closed) 
    { 
     con.Open(); 
    } 
    cmd.ExecuteNonQuery(); 
    con.Close(); 
    ListApointement(); 
} 

private void ListApointement() 
{ 
    using (ListApointementDataContext db = new ListApointementDataContext()) 
    { 
     var aptItems = from ListApointement in db.ListApointement select ListApointement; 
     ListView1.DataSourceID = null; 
     ListView1.DataSource = aptItems; 
     ListView1.DataBind(); 
    }; 
} 
+0

Перейдите в отладку и вставьте SQL, он работает там? –

+0

'aptItems' vs' rdvItems'? –

+2

Похож на недостающие параметры для меня ... – ganders

ответ

1

Ваш запрос, как сейчас, выглядит следующим образом:

string cmdText = "UPDATE Doctor SET [email protected],[email protected], 
    [email protected],[email protected] WHERE [email protected]"; 

Он смотрит на меня, как вы включили параметр, который вы не используете в запросе:

cmd.Parameters.AddWithValue("@isAvailable", "False"); 
// You aren't passing this in your query but have it listed as a parameter... 

и имеют параметры, указанные в запросе, что вы не используете:

cmd.Parameters.AddWithValue("@doctorName", // @doctorName type needs to go here); 
cmd.Parameters.AddWithValue("@dateApt", // @dateApt type needs to go here); 
cmd.Parameters.AddWithValue("@hrApt", // @hrApt type needs to go here); 
+0

Какая ошибка генерируется sql? Я добавил отсутствующий столбец. string cmdText = "UPDATE Doctor SET doctorName = @ doctorName, dateApt = @ dateApt, hrApt = @ hrApt, clientname = @ clientName, isAvailable = @ isAvailable WHERE apointmentId = @ apointementId"; – user3127986

+0

, но не более успеха база данных по-прежнему не обновляется – user3127986

+0

Можете ли вы объяснить мне, как увидеть код sql, сгенерированный в спину с помощью Visual Studio 2013? – user3127986

Смежные вопросы