我已經在這個上搜索了幾天,並且發現了許多可能性,並且在C#代碼中進行了sql連接,但是我找不到任何使用像我的web.config和.aspx頁面。ASP.NET sqldatasource ReturnValue在代碼隱藏中無法訪問
問題:我有我的SQLdatasource1與插入使用存儲過程。 SP檢查一個重複的ID(MRN),如果它找到一個,吐出返回值0,如果沒有,吐出一個1。只要沒有重複,它也會執行插入操作。這一切都很好。
但是,我想抓住ReturnValue,檢查0或1並根據結果給用戶一條消息。這就是我正在處理的事情。爲簡單起見,它被縮寫。該表單是一個帶有InsertItemTemplate的asp:formview,並且所有控件都包含在其中。
<asp:sqldatasource ID="sqldatasource1" runat="server"
ConnectionString="<%$ ConnectionStrings:... %>"
ProviderName="..."
...
<InsertParameters>
<asp:Parameter Name="return_value" DefaultValue="0" Type="Empty" Size="0" ConvertEmptyStringToNull="False" Direction="ReturnValue" />
</InsertParameters>
在代碼隱藏中,我只是想抓住參數return_value的值並對其作出響應。我在下面是我想要做的,但顯然是錯誤的。我只是想將它張貼,因爲我想知道我的意圖。我嘗試過使用按鈕的單擊,並且這不僅給了我同樣的錯誤,即當前上下文中不存在return_value,但它也不會發布消息框。我已經嘗試了很多不同的東西,現在我迷了路。
更新:這是我目前在代碼隱藏。 MessageBox彈出時只顯示「@return_value」。
protected void Sqldatasource1_Inserted(object sender, SqlDataSourceStatusEventArgs e)
{
SqlParameter return_value = new SqlParameter("@return_value", SqlDbType.Int);
return_value.Direction = ParameterDirection.ReturnValue;
return_value.Value = (object)return_value ?? DBNull.Value;
MessageBox.Show(return_value.Value.ToString());
if (Convert.ToInt32(return_value.Value) != 1)
{
MessageBox.Show(return_value.Value.ToString());
}
else
{
MessageBox.Show(return_value.Value.ToString());
}
}
在此先感謝。對不起,如果這是可笑的基本,但我是盲目的。
UPDATE 2(2013年5月7日):經過額外的搜索和閱讀後,我嘗試了一些其他沒有奏效的東西。沒有錯誤,只是不起作用。我在插入的內容中嘗試了以下兩個位。
int? return_value = e.Command.Parameters["@return_value"].Value as int?;
MessageBox.Show(return_value.ToString());
和
int return_value = (Convert.ToInt32(e.Command.Parameters["@return_value"]));
MessageBox.Show(return_value.ToString());
感謝您的幫助。這似乎是朝着正確方向邁出的一步。我試圖改變爲C#,並做了OP爲他的解決方案做了什麼,但我想我得到的類型和轉換都搞砸了。我在那裏放置了一個消息框,試圖在IF之前看到return_value,但是整個事情都失敗了,所以我什麼都沒有。 'SqlParameter return_value = default(SqlParameter); return_value.Direction = ParameterDirection.ReturnValue; MessageBox.Show(return_value.Value.ToString()); if(Convert.ToInt32(return_value.Value)!= 1)...' – 2013-05-06 19:25:26
我也嘗試過使用 'SqlParameter return_value = new SqlParameter(「@ return_value」,SqlDbType.Int);'而不是default( sqlparameter),但迄今爲止我還沒有更好的運氣。 – 2013-05-06 19:30:30
你在檢查'插入'事件中的Return_value嗎?插入是在插入之前,插入將包含實際的返回值。 – AContractor 2013-05-06 19:33:47