2009-07-08 147 views
0
protected void DetailsView1_ItemInserted(object sender, EventArgs e) 
{ 
    using (SqlCommand cmd2 = new SqlCommand("uspUpdateDisplayHours", cn)) 
     { 
      cn.Open(); 
      cmd2.CommandType = CommandType.StoredProcedure; 
      cmd2.ExecuteNonQuery(); 
      cn.Close(); 
     } 
     DetailsView1.DataBind(); 
    } 
} 

存儲過程正在處理SQL Server - 更新表單上的column1。 但沒有顯示.net上的結果/數據,沒有錯誤。這不是刷新/數據綁定的頁面。如何刷新linq數據源?

+2

存儲過程是否應該返回一些東西? – 2009-07-08 16:59:44

+0

我同意w/Dreas:定義「不工作」。 – Eric 2009-07-08 17:00:16

+0

你確定該函數正在執行嗎?在某處放置一個斷點。 – 2009-07-08 17:00:33

回答

0

它看起來像存儲過程正在運行,但你沒有使用任何會導致它刷新你的數據源的結果。運行存儲過程以實際綁定數據後,必須從數據庫中獲取某些內容。

的將數據傳回的簡單的例子:

protected void DetailsView1_ItemInserted(object sender, EventArgs e) 
{ 
    using (SqlCommand cmd2 = new SqlCommand("uspUpdateDisplayHours", cn)) 
    using (SqlDataAdapter adapter = new SqlDataAdapter(cmd2))   
     { 
      var dataSet = new DataSet(); 
      cn.Open(); 
      cmd2.CommandType = CommandType.StoredProcedure; 
      adapter.Fill(dataSet); 
      var _result = //get to your result some how. 
      DetailsView.DataSource = result; 
      cn.Close(); 
     } 
     DetailsView1.DataBind(); 
    } 
} 

我真的不建議這樣做。我只是爲了說明爲什麼我認爲你的DetailsView沒有被你期望的數據刷新。

0

我只是猜測這裏,但如何對這樣的事情:

protected void DetailsView1_ItemInserted(object sender, EventArgs e) 
{ 
    DataSet ds = new DataSet(); 
    using (SqlCommand cmd2 = new SqlCommand("uspUpdateDisplayHours", cn)) 
    { 
     cmd2.CommandType = CommandType.StoredProcedure; 
     new SqlDataAdapter(cmd2).Fill(ds); 
    } 
    DetailsView1.DataSource = ds; 
    DetailsView1.DataBind(); 
    } 
} 

在上面的例子中,我假設你想從SP返回的東西。


如果你只是想從數據庫中的數據以更新DetailsView控件(比如當您填充表單時加載它),只需再次運行該方法。

void PopulateForm() { 
    //get data from database and bind it to the ListView 
} 

protected void DetailsView1_ItemInserted(object sender, EventArgs e) 
{ 
    // <= here run the uspUpdateDisplayHours sp 

    PopulateForm(); //run this method method again so that the data is refreshed   
} 
+0

你是對的我想從sp返回一些東西。從Form(.net)更新後,我更新的數據仍然不顯示。但是當我回到Form(.net)時,它顯示更新的數據。它不刷新窗體(.net)。幫助〜 – Yves 2009-07-08 17:19:46

0

您打電話給ExecuteNonQuery應該用於更新數據庫插入,刪除,更新。

嘗試使用ExecuteReader,它將返回SqlDataReader對象中的結果。

+0

我試過ExecuteReader ...從Form(.net)更新後更新的數據仍然沒有顯示。但是當我回到Form(.net)時,它顯示更新的數據。它不刷新窗體(.net)。幫助〜 – Yves 2009-07-08 17:24:44