ASP.NET Gridview не показывает строки, если значение в строке равно NULLC#

Место общения программистов C#
Ответить
Anonymous
 ASP.NET Gridview не показывает строки, если значение в строке равно NULL

Сообщение Anonymous »

У меня есть представление сетки, которое я заполняю из SQLDataSource. Пользователи выбирают значения из раскрывающегося списка для заполнения промежуточной таблицы. Есть один раскрывающийся список, в котором есть каскадный раскрывающийся список... пользователь выбирает «Отдел», и ЕСЛИ в этом отделе есть программа, тогда пользователь выбирает программу из другого раскрывающегося списка. Если у отдела нет проблем, раскрывающийся список «Программа» остается невидимым.
Код программной части работает так, что если пользователь вводит запись без программы, я все равно могу видеть строка, отображаемая в таблице SQL, со значением NULL для Program. Однако, когда DataBind() произойдет снова, в представлении сетки не будет отображаться позиция, имеющая нулевое значение.

Код: Выделить всё

      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();

command.Parameters.AddWithValue("@librarianId", ddlLibrarians.SelectedItem.Value);
command.Parameters.AddWithValue("@acquisitionsTechId", ddlAcqTechs.SelectedItem.Value);
command.Parameters.AddWithValue("@catalogingTechId", ddlCatTechs.SelectedItem.Value);
command.Parameters.AddWithValue("@departmentId", ddlDepts.SelectedItem.Value);
if (ddlProgs.SelectedIndex != -1)
command.Parameters.AddWithValue("@programId", ddlProgs.SelectedItem.Value);
else
command.Parameters.AddWithValue("@programId", DBNull.Value);
command.Parameters.AddWithValue("@institutionId", ddlInst.SelectedItem.Value);
command.Parameters.AddWithValue("@descr", itemTitle.Text);
command.Parameters.AddWithValue("@materialTypeId", ddlMaterial.SelectedItem.Value);
command.Parameters.AddWithValue("@vendorId", ddlVendor.SelectedItem.Value);
command.Parameters.AddWithValue("@source", source.Text);
command.Parameters.AddWithValue("@requestingFaculty", facName.Text);
if (command.Parameters.Contains("@facultyEmail"))
command.Parameters.AddWithValue("@facultyEmail", facEmail.Text);
else
command.Parameters.AddWithValue("@facultyEmail", "");

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();

Я подумал, что, возможно, проблема была в самом GridView, поэтому я добавил NullDisplayText="-NA-" в свойства GridView, но все равно безуспешно. ОБНОВЛЕНИЕ: Я думаю, проблема здесь.... Я показываю/заполняю раскрывающийся список программ только в том случае, если программы существуют для этого отдела. , но ИНАЧЕ я ничего особо не обязываю....

Код: Выделить всё

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;;
}
}
Как мне обновить оператор ELSE?

Подробнее здесь: https://stackoverflow.com/questions/791 ... ow-is-null
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»