C # / DataTable / DataGrid / SQL - Как я могу вставить Params в хранимую процедуру из DataGridView - PullRequest
0 голосов
/ 06 февраля 2020

Спасибо, что нашли время, чтобы прочитать это. По сути, я пытаюсь вернуть подробности о [Issues], которые извлекаются из БД с помощью хранимой процедуры

. Имеется 2 параметра: [IssueNo] и [LineNo]. Когда я нажимаю на кнопку, программа должна вернуть подробности, например: ItemName, Code et c для каждого DataGridRow, который я выберу, НО она в настоящее время возвращает детали LAST [Issues] вместо того, который я выбираю в сетки.

Я знаю, что моя хранимая процедура верна, но где-то в моем коде 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 черным цветом в хранимую процедуру. который затем возвращает подробности для выбранной проблемы. это возвращает правильную идею данных, но для неправильной проблемы. И если я выбираю несколько строк, он все равно возвращает только одну

Если вам нужна какая-либо другая дополнительная информация, пожалуйста, не стесняйтесь спрашивать. Я терпеливо жду вашего ответа

1 Ответ

0 голосов
/ 06 февраля 2020

Так что я не совсем уверен, как я это исправил, но вот что я изменил, и теперь это работает, так что для тех, у кого такая же проблема, это то, что я сделал, чтобы решить проблему выше, может быть, кто-то может объяснить, что я сделал лучше чем я могу

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;

...