簡體   English   中英

C#/DataTable/DataGrid/SQL - 如何從 DataGridView 將參數插入到存儲過程中

[英]C#/DataTable/DataGrid/SQL - How can I insert Params into a stored procedure from DataGridView

感謝您抽出時間閱讀本文。 基本上我想要做的是返回有關通過存儲過程從數據庫中提取的 [問題] 的詳細信息

有 2 個參數, [IssueNo][LineNo] 當我單擊一個按鈕時,程序需要為我選擇的每個 DataGridRow 返回詳細信息,例如:ItemName、Code 等,但它當前所做的是返回最后一個 [問題] 詳細信息,而不是我在網格中選擇的詳細信息。

我知道我的存儲過程是正確的,但是在我的 C# 代碼中的某個地方,參數沒有獲得我選擇的每一行的值。 只有一個,它仍然是錯誤的

foreach (DataRow dr in dataGridView2.SelectedRows)
{
    IssueNo = Convert.ToInt32(dr[0].ToString());
    TranLineNo = Convert.ToInt32(dr[1].ToString()); 
}

detailsCmd.Parameters.AddWithValue("IssueNo", IssueNo);
detailsCmd.Parameters.AddWithValue("TranLineNo", TranLineNo);
DetailsIssue details1 = new DetailsIssue();

SqlDataAdapter Idetails = new SqlDataAdapter(detailsCmd);
Idetails.Fill(detailsReturned);

details1.dgvIssuesDetail.DataSource = detailsReturned;
details1.Show();

那是用於查找存儲過程參數的代碼。

https://prnt.sc/qybxvs這里是應用程序的樣子,紅色是選定的行,單擊后單擊的詳細信息按鈕將黑色的 IssueNo 和 TranLineNo 傳遞給存儲過程,然后存儲過程返回詳細信息選擇的問題。 它返回正確的數據想法,但針對錯誤的問題。 如果我選擇多行,它仍然只返回一

如果您需要任何其他附加信息,請隨時詢問。 我耐心等待你的回復

所以我不確定我是如何修復它的,但這是我改變的,現在它可以工作了,所以對於任何有同樣問題的人來說,這就是我為解決上述問題所做的,也許有人可以解釋我做得比我做得更好

DataTable issueView = new DataTable();
SqlConnection issueConn = new SqlConnection(GetConnectionString());
issueConn.Open();
SqlCommand issueCmd = new SqlCommand("sp_Populate_Issue_View", issueConn)
{
    CommandType = CommandType.StoredProcedure
};
if (chkHideReturned.Checked == true)
{
    issueCmd.Parameters.AddWithValue("Codefrom", 100);
    issueCmd.Parameters.AddWithValue("Codeto", 100);

}
else
{
    issueCmd.Parameters.AddWithValue("Codefrom", 100);
    issueCmd.Parameters.AddWithValue("Codeto", 120);
}
SqlDataAdapter da2 = new SqlDataAdapter(issueCmd);
da2.Fill(issueView);
dataGridView2.DataSource = issueView;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM