我想選擇一個GridView上的單行,並有選擇帶我到一個單獨的編輯頁面的數據填充。我有使用會話變量來保存行ID,然後檢索頁面加載和填充文本框中的數據的想法。我的問題是這是否是最好的方法去做這件事?我寧願不使用gridview中的內聯編輯選項,因爲我有太多需要水平滾動的列。以下是使用會話變量網頁的加載方法:填充Web窗體編輯頁面C#ASP.NET
if (Session["editID"] != null)
{
dbCRUD db = new dbCRUD();
Recipe editRecipe = new Recipe();
var id = Convert.ToInt32(Session["editID"]);
Session.Remove("editID");
editRecipe = db.SelectRecord(id);
addName.Text = editRecipe.Name;
}
這裏是用來檢索該行的SelectRecord方法:
public Recipe SelectRecord(int id)
{
Recipe returnedResult = new Recipe();
var dbConn = new SqlConnection(connString);
var dbCommand = new SqlCommand("dbo.selectRecipe", dbConn);
dbCommand.CommandType = CommandType.StoredProcedure;
dbCommand.Parameters.Add("@ID", SqlDbType.Int).Value = id;
dbConn.Open();
SqlDataReader reader = dbCommand.ExecuteReader();
while (reader.HasRows)
{
while (reader.Read())
{
returnedResult.Name = reader["Name"].ToString();
}
}
dbConn.Close();
return returnedResult;
}
我可能不恰當地使用SqlDataReader的,但我的結果是閱讀器中沒有數據,因此調用該方法時沒有返回數據。任何幫助表示讚賞 - 在此先感謝!
返回的記錄確實有多個列,但我只分配名稱值來測試功能。 –
你是否在'while(reader.Read())'部分?換句話說,你是否返回任何行? – sr28
是的,至少我知道雖然(reader.HasRows)是真的,所以我假設我至少在那個循環中,但程序實際上掛起,不會進一步處理。它是一個遠程連接到SQL數據庫,但我已驗證連接。 –