candijen Ответов: 1

Я хочу иметь возможность выбрать опцию из выпадающего списка, а затем отобразить сетку с опцией checkbox и сохранить выбранные параметры в базе данных


Я хочу иметь возможность выбрать опцию из выпадающего списка, а затем отобразить сетку с опцией checkbox и сохранить выбранные параметры в базе данных, но мой код не работает, пожалуйста, проверьте.

Цель состоит в том, чтобы выбрать предмет из таблицы "предметы" через выпадающий список, а затем отобразить соответствующие CourseOutcomes (которые представляют собой несколько строк)
в виде сетки с флажками сбоку, которые затем при выделении сохранят данные в другую таблицу под названием savedCLO.


public partial class ModView : System.Web.UI.Page
{
    SqlConnection con = new SqlConnection(@"Data Source=(localdb)\v11.0;Initial Catalog=facultylog;Integrated Security=True");
    protected void Page_Load(object sender, EventArgs e)
    {
        {

            String strConnString = ConfigurationManager.ConnectionStrings["facultylogConnectionString"].ConnectionString;
            String strQuery = "select Subject_Name from subjects";
            SqlConnection con = new SqlConnection(strConnString);
            SqlCommand cmd = new SqlCommand();
            cmd.CommandType = CommandType.Text;
            cmd.CommandText = strQuery;
            cmd.Connection = con;
            try
            {
                con.Open();
                DropDownList1.DataSource = cmd.ExecuteReader();
                DropDownList1.DataTextField = "Subject_Name";

                DropDownList1.DataBind();
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                con.Close();
                con.Dispose();
            }
        }
        
        if (!Page.IsPostBack)
        {
            
          refreshdata();
        }

    }

 

    public void refreshdata()
    {
        SqlCommand cmd = new SqlCommand("select CourseOutcomes from CLO", con);
        SqlDataAdapter sda = new SqlDataAdapter(cmd);
        DataTable dt = new DataTable();
        sda.Fill(dt);
        GridView1.DataSource = dt;
        GridView1.DataBind();
    }
   

    
    protected void Button1_Click(object sender, EventArgs e)
    {
        foreach (GridViewRow gvrow in GridView1.Rows)
        {
            var checkbox = gvrow.FindControl("CheckBox1") as CheckBox;
            if (checkbox.Checked)
            {
                var lblId = gvrow.FindControl("Label1") as Label;
                var lblSubjectName = gvrow.FindControl("Label2") as Label;
                var lblCourseOutcomes = gvrow.FindControl("Label3") as Label;


                SqlCommand cmd = new SqlCommand("insert into savedCLO (Id, SubjectName, CourseOutcomes) values (@Id, @SubjectName, @CourseOutcomes)", con);
                cmd.Parameters.AddWithValue("Id", lblId.Text);
                cmd.Parameters.AddWithValue("SubjectName", lblSubjectName.Text);
                cmd.Parameters.AddWithValue("CourseOutcomes", lblCourseOutcomes.Text);
                

                con.Open();
                int i = cmd.ExecuteNonQuery();
                con.Close();
               refreshdata();

            }

        }
    }
    protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
    {
        
        String strConnString = ConfigurationManager.ConnectionStrings["facultylogConnectionString"].ConnectionString;
        String strQuery = "select CourseOutcomes from CLO where" + " SubjectName = @Subject_Name";
        SqlConnection con = new SqlConnection(strConnString);
        SqlCommand cmd = new SqlCommand();


        cmd.Parameters.AddWithValue("@Subject_Name", DropDownList1.SelectedItem.Value);
        cmd.CommandType = CommandType.Text;
        cmd.CommandText = strQuery;
        cmd.Connection = con;
        try
        {
            con.Open();
            SqlDataReader sdr = cmd.ExecuteReader();
            while (sdr.Read())
            {

                refreshdata();

            }
        }
        catch (Exception ex)
        {
            throw ex;
        }
        finally
        {
            con.Close();
            con.Dispose();
        }


Aspx-файл

    <asp:gridview id="GridView1" runat="server" autogeneratecolumns="False" 

="" backcolor="White" bordercolor="#DEDFDE" borderstyle="None" borderwidth="1px" cellpadding="4" forecolor="Black" gridlines="Vertical" style="margin-top: 142px">  
            <alternatingrowstyle backcolor="White">  
            <columns>  
                <asp:templatefield headertext="ID">  
                    <edititemtemplate>  
                        <asp:textbox id="TextBox1" runat="server" text="<%# Bind("Id") %>">  
                      
                    <itemtemplate>  
                    <asp:label id="Label1" runat="server" text="<%# Bind("Id") %>">  

                      

                  

                <asp:templatefield headertext="Subject Name">  
                    <edititemtemplate>  
                        <asp:textbox id="TextBox2" runat="server" text="<%# Bind("SubjectName") %>">  
                      
                    <itemtemplate>  
                        <asp:label id="Label2" runat="server" text="<%# Bind("SubjectName") %>">  
                      
                  

                <asp:templatefield headertext="Course Outcomes">  
                    <edititemtemplate>  
                        <asp:textbox id="TextBox3" runat="server" text="<%# Bind("CourseOutcomes") %>">  
                      
                    <itemtemplate>  
                        <asp:label id="Label3" runat="server" text="<%# Bind("CourseOutcomes") %>">  
                      
                  
                
                <asp:templatefield headertext="Select Applicable">  
                    <edititemtemplate>  
                        <asp:checkbox id="CheckBox1" runat="server">  
                      
                    <itemtemplate>  
                        <asp:checkbox id="CheckBox1" runat="server">  
                      
                  
              
            <footerstyle backcolor="#CCCC99">  
            <headerstyle backcolor="#6B696B" font-bold="True" forecolor="White">  
            <pagerstyle backcolor="#F7F7DE" forecolor="Black" horizontalalign="Right">  
            <rowstyle backcolor="#F7F7DE">  
            <selectedrowstyle backcolor="#CE5D5A" font-bold="True" forecolor="White">  
            <sortedascendingcellstyle backcolor="#FBFBF2">  
            <sortedascendingheaderstyle backcolor="#848384">  
            <sorteddescendingcellstyle backcolor="#EAEAD3">  
            <sorteddescendingheaderstyle backcolor="#575357">  
          
      
        
        <asp:dropdownlist id="DropDownList1" runat="server" onselectedindexchanged="DropDownList1_SelectedIndexChanged">
        
        
        
      
          
     
         <asp:button id="Button1" runat="server" onclick="Button1_Click" 

="" text="Save to Database">  


Что я уже пробовал:

Я попробовал приведенный выше код, но он не работает.
Цель состоит в том, чтобы выбрать предмет из таблицы "предметы" через выпадающий список, а затем отобразить соответствующие CourseOutcomes (которые представляют собой несколько строк)
в виде сетки с флажками сбоку, которые затем при выделении сохранят данные в другую таблицу под названием savedCLO.

Пожалуйста, скажите мне, как исправить этот код, я не хочу менять способ, которым я это делаю, я просто хочу исправить текущий код. Мне не нужны альтернативные методы, потому что я перепробовал так много, и все они не работают, спасибо, на данный момент было бы проще просто исправить этот код. Если вы действительно поможете, спасибо, это очень много значит, и я борюсь со всем этим проектом.

F-ES Sitecore

Нам нужно было бы увидеть соответствующие биты разметки на странице aspx, а также определение того, что означает "не работает".

candijen


&ЛТ;АСП:таблицы с ID="gridview1, на" атрибут runat="сервер" autogeneratecolumns="ложных"
="" backcolor="White" bordercolor="#DEDFDE" borderstyle="None" borderwidth="1px" cellpadding="4" forecolor="Black" gridlines="Vertical" style="margin-top: 142px">
<alternatingrowstyle backcolor="Белый">
<столбцы>
<asp:templatefield headertext="ID">
<edititemtemplate>
&ЛТ;АСП:текстовое поле с ID="элемент textbox1" атрибут runat="сервер" текст="&ЛТ;%# Персонализация("идентификатор") %&ГТ;"&ГТ;

<itemtemplate>
&ЛТ;АСП:метка идентификатор="Метка1" атрибут runat="сервер" текст="&ЛТ;%# Персонализация("идентификатор") %&ГТ;"&ГТ;





<asp:templatefield headertext="имя темы">
<edititemtemplate>
&ЛТ;АСП:текстовое поле с ID="поле textbox2" атрибут runat="сервер" текст="&ЛТ;%# Персонализация("subjectname в") %&ГТ;"&ГТ;

<itemtemplate>
&ЛТ;АСП:метка идентификатор="Метка2" атрибут runat="сервер" текст="&ЛТ;%# Персонализация("subjectname в") %&ГТ;"&ГТ;



<asp:templatefield headertext="результаты курса">
<edititemtemplate>
&ЛТ;АСП:текстовое поле с ID="textbox3 и" атрибут runat="сервер" текст="&ЛТ;%# Персонализация("CourseOutcomes") %&ГТ;"&ГТ;

<itemtemplate>
&ЛТ;АСП:метка идентификатор="Метка3" атрибут runat="сервер" текст="&ЛТ;%# Персонализация("CourseOutcomes") %&ГТ;"&ГТ;



<asp:templatefield headertext="выбрать применимое">
<edititemtemplate>
<asp:checkbox id="CheckBox1" runat="сервер">

<itemtemplate>
<asp:checkbox id="CheckBox1" runat="сервер">



<footerstyle backcolor="#CCCC99">
&ЛТ;headerstyle свойства backcolor="#6B696B" шрифт-жирный="истинный" цвет="белый"и GT;
&ЛТ;pagerstyle свойства backcolor="#F7F7DE" цвет="черный" horizontalalign="Право"и GT;
<rowstyle backcolor="#F7F7DE">
&ЛТ;selectedrowstyle свойства backcolor="шрифт-жирный#CE5D5A"="истинный" цвет="белый"и GT;
<sortedascendingcellstyle backcolor="#FBFBF2">
<sortedascendingheaderstyle backcolor="#848384">
<sorteddescendingcellstyle backcolor="#EAEAD3">
<sorteddescendingheaderstyle backcolor="#575357">



&ЛТ;как ASP:dropdownlist с ИД="DropDownList1" атрибут runat="сервер" onselectedindexchanged="DropDownList1_SelectedIndexChanged"&ГТ;






&ЛТ;АСП:кнопка ID="кнопка 1" атрибут runat="сервер" функция onclick="обработчика button1_click"
="" text="Save to Database">




Не работает означает, что сетка не отображается, когда я выбираю что-то из выпадающего списка

1 Ответов

Рейтинг:
10

F-ES Sitecore

Здесь слишком много неправильного, чтобы беспокоиться об исправлении, я знаю, что это не то, что вы хотите услышать, но вам нужно избавиться от всего этого и начать с нуля. Разбейте проблему на шаги и решайте каждый шаг полностью по очереди, вместо того чтобы пытаться бросить все на стену и исправить все это одновременно. Вы можете сохранить общий метод и структуру, которые вы используете, это нормально, но вам нужно реализовать его шаг за шагом и убедиться, что каждый шаг работает, прежде чем двигаться дальше, и весь этот код с проблемами усложняет это.

Получите выпадающий список, заполненный из вашей базы данных (кстати, у вас есть два объекта "con", указывающих на разные базы данных, и если это так, то он укусит вас по дороге, так как вы запутаетесь, какой "con" указывает куда)

Дайте выпадающему списку событие onselectedindexchanged и атрибут AutoPostback=True. Я предполагаю, что вы хотите этого, я не знаю точно. Также убедитесь, что выпадающий список привязывается только к вашей базе данных, когда !страница.IsPostBack в противном случае он будет сброшен в состояние по умолчанию, а не помнить, что было выбрано.

По этому индексу измененного события получаем код, который считывает соответствующие данные из базы данных и отображает их в виде сетки. В настоящее время вы делаете выбор с помощью WHERE на основе выпадающего списка, но игнорируете эти данные и вместо этого вызываете refreshdata, который показывает все. Игнорируйте эту функцию и привязывайте gridview к данным, которые вы получаете обратно на основе выпадающего списка, и Вам также не нужно делать это в цикле ".Read ()", просто дайте gridview данные, и он сделает одну строку на результат.

Вы также привязываете gridview к столбцам, которые не существуют в SQL, который вы получаете обратно (ID и SubjectName), я не вижу, как ваш код вообще может работать.

Игнорируйте EditItemTemplate и используйте только ItemTemplate, или используйте оба, как вы есть, но поместите gridview в режим редактирования. Как бы то ни было, Ваш gridview не находится в режиме редактирования, но вы ищете элементы управления, которые существуют только в режиме редактирования ("CheckBox1"), поэтому вы их не найдете.