У меня есть страница View Feedback с двумя выпадающими списками для фильтрации сетки ответов на вопросы.1-й список ddList - это Модули. После того, как он выбран, включается 2-й список вопросов ddList, и пользователь может выбрать вопрос, чтобы увидеть ответы на него относительно выбранного модуля, ИЛИ он может выбрать, чтобы увидеть все ответы на все вопросы длявыбранный модуль.
У меня это работает, если они выбирают вопрос, но если они выбирают все, я просто получаю все ответы, а не только те, которые относятся к выбранному модулю.
Извините, я знаю, что это не самое ясное объяснениено любая помощь будет потрясающей.
Мои таблицы:
CREATE TABLE tblModules
(
Module_ID nvarchar(10) PRIMARY KEY,
Module_Title nvarchar(MAX) NOT NULL
);
CREATE TABLE tblQuestions
(
Q_ID int PRIMARY KEY IDENTITY(1,1),
Question_Text varchar(1000) NOT NULL
);
CREATE TABLE tblFeedback
(
Submission_ID int PRIMARY KEY IDENTITY(1,1),
Username varchar(100) NOT NULL,
Domain varchar(50) NOT NULL,
DateTime_Submitted datetime NOT NULL
Module_ID nvarchar(10)
FOREIGN KEY (Module_ID) REFERENCES tblModules (Module_ID);
);
CREATE TABLE tblAnswers
(
Q_ID int NOT NULL,
Submission_ID int NOT NULL,
Answer_Text varchar(max),
FOREIGN KEY (Q_ID) REFERENCES tblQuestions(Q_ID),
FOREIGN KEY (Submission_ID) REFERENCES tblFeedback(Submission_ID)
);
Вот фрагмент кода, который я использую для построения оператора Sql, который используется для выбора данных, которые затем привязываются к моей сетке.
// If they have selected view all questions, get all answers for module
if (ddQuestions.SelectedItem.Value == "all")
{
//selectQuery = "SELECT * FROM tblAnswers ORDER BY Submission_ID";
selective = false;
//gridviewFeedback.Columns[3].Visible = true;
selectQuery = "SELECT * FROM tblAnswers A ";
selectQuery += "WHERE EXISTS (SELECT * FROM tblModules M JOIN tblFeedback F ON M.Module_ID = F.Module_ID ";
selectQuery += "WHERE F.Module_ID = '" + this.selectedModuleID + "')";
}
// Instead, if they have selected a specific question, get the information for the selected module and question
else
{
selectQuery = "SELECT * FROM tblAnswers WHERE Q_ID = '" + qID + "' ORDER BY Submission_ID";
selective = true;
//gridviewFeedback.Columns[3].Visible = false;
}
DataSet objDs = new DataSet();
SqlDataAdapter myCommand2;
myCommand2 = new SqlDataAdapter(selectQuery, myConnection);
myCommand2.SelectCommand.CommandType = CommandType.Text;
myCommand2.Fill(objDs);
gridviewFeedback.DataSource = objDs;
gridviewFeedback.DataBind();
Я думаю, что это мой оператор SQL, поскольку я не очень разбираюсь в SQL и вроде отредактировал оператор, который я использовал в другом месте, который был дан мне кем-то другим.
ОБНОВЛЕНИЕ Просто понял, что мое другое утверждение тоже не работает - оно также не дает конкретных ответов для модуля.