Пользователи выбирают значения из раскрывающегося списка для заполнения промежуточной таблицы. Есть один раскрывающийся список, в котором есть каскадный раскрывающийся список... пользователь выбирает «Отдел», и ЕСЛИ в этом отделе есть программа, тогда пользователь выбирает программу из другого раскрывающегося списка. Если у отдела нет проблем, раскрывающийся список «Программа» остается невидимым.
Код программной части работает так, что если пользователь вводит запись без программы, я все равно могу видеть строка, отображаемая в таблице SQL, со значением NULL для Program. Однако, когда DataBind() произойдет снова, в представлении сетки не будет отображаться позиция, имеющая нулевое значение.
ОБНОВЛЕНИЕ: Я думаю, проблема здесь.... Я показываю/заполняю раскрывающийся список программ только в том случае, если программы существуют для этого отдела. , но ИНАЧЕ я ничего особо не обязываю....
У меня есть представление сетки, которое я заполняю из SQLDataSource. [code]
[/code] Пользователи выбирают значения из раскрывающегося списка для заполнения промежуточной таблицы. Есть один раскрывающийся список, в котором есть каскадный раскрывающийся список... пользователь выбирает «Отдел», и ЕСЛИ в этом отделе есть программа, тогда пользователь выбирает программу из другого раскрывающегося списка. Если у отдела нет проблем, раскрывающийся список «Программа» остается невидимым. Код программной части работает так, что если пользователь вводит запись без программы, я все равно могу видеть строка, отображаемая в таблице SQL, со значением NULL для Program. Однако, когда DataBind() произойдет снова, в представлении сетки не будет отображаться позиция, имеющая нулевое значение. [code] string sql = "insert into OrderStaging (yearCode, librarianID, acquisitionsTechId, catalogingTechId, institutionId, departmentId, programId, descr, " + "materialTypeId, vendorId, source, requestingFaculty, facultyEmail, facultyPhone, courseReserve, courseId, courseName, requestorNotes, notify, " + "preview, hold) values (year(getdate()), @librarianId, @acquisitionsTechId, @catalogingTechId, @institutionId, @departmentId, @programId, @descr, +" + "@materialTypeId, @vendorId, @source, @requestingFaculty, @facultyEmail, @facultyPhone, @courseReserve, @courseId, @courseName, @requestorNotes, @notify, @preview, @hold)";
try {
conn = new SqlConnection(ConfigurationManager.AppSettings["ForCustomWebApps"]); SqlCommand command = conn.CreateCommand();
if (command.Parameters.Contains("@facultyPhone")) command.Parameters.AddWithValue("@facultyPhone", facPhone.Text); else command.Parameters.AddWithValue("@facultyPhone", ""); command.Parameters.AddWithValue("@courseReserve", courseReserve.SelectedValue); command.Parameters.AddWithValue("@courseId", courseNum.Text); command.Parameters.AddWithValue("@courseName", courseName.Text); command.Parameters.AddWithValue("@requestorNotes", requestorNotes.Text); if (!notify.Selected) command.Parameters.AddWithValue("@notify", "Y"); else command.Parameters.AddWithValue("@notify", "N"); if (!preview.Selected) command.Parameters.AddWithValue("@preview", "Y"); else command.Parameters.AddWithValue("@preview", "N"); if (!hold.Selected) command.Parameters.AddWithValue("@hold", "Y"); else command.Parameters.AddWithValue("@hold", "N");
command.CommandText = sql; SqlDataAdapter adapter = new SqlDataAdapter(command); adapter = new SqlDataAdapter(command);
DataSet ds = new DataSet(); adapter.Fill(ds, "orders"); gvOrders.DataBind();
[/code] Я подумал, что, возможно, проблема была в самом GridView, поэтому я добавил NullDisplayText="-NA-" в свойства GridView, но все равно безуспешно. [code]
[/code] [b]ОБНОВЛЕНИЕ:[/b] Я думаю, проблема здесь.... Я показываю/заполняю раскрывающийся список программ только в том случае, если программы существуют для этого отдела. , но ИНАЧЕ я ничего особо не обязываю.... [code]protected void Depts_SelectedIndexChanged(object sender, EventArgs e) { // populate Programs drop-down after Department is selected if Programs exist
DataTable programs = new DataTable(); string programQuery = "SELECT programId, programDescr from Programs where activeInd = @indicator and departmentID = " + ddlDepts.SelectedItem.Value;
ddlProgs.Enabled = false; ddlProgs.Items.Clear();
using (conn = new SqlConnection(ConfigurationManager.AppSettings["ForCustomWebApps"])) {
try {
SqlCommand command = new SqlCommand(programQuery, conn); SqlDataAdapter adapter = new SqlDataAdapter(command); SqlParameter param2 = new SqlParameter { ParameterName = "@indicator", Value = "A" }; adapter.SelectCommand = command; command.Parameters.Add(param2); adapter.Fill(programs);
// only enable this drop-down and populate it if programs exist for that department if (programs.Rows.Count > 0) { lblProgs.Visible = true; ddlProgs.Visible = true; ddlProgs.Enabled = true; ddlProgs.DataSource = programs; ddlProgs.DataTextField = "programDescr"; ddlProgs.DataValueField = "programId"; ddlProgs.DataBind(); ddlProgs.Items.Insert(0, new ListItem("-- make selection --", "")); } else { lblProgs.Visible = false; ddlProgs.Visible = false; ddlProgs.Enabled = false;; } } [/code] Как мне обновить оператор ELSE?