在ASP.NET中创建动态下拉列表后,无法在回发时存储信息

本文关键字:信息 存储 NET ASP 创建 下拉列表 动态 | 更新日期: 2023-09-27 18:02:34

这是我的代码

按钮2单击事件后,它正在创建下拉表行,但当我试图保存按钮1单击事件,它只是消失。关于这个问题,我还没有找到任何解决办法。我已经使用了查找控件视图状态等,但它没有帮助。

我想在button_1单击事件开始后存储下拉列表的选定值。

public partial class StudentClassSectionMapping : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if(!IsPostBack)
            {
                ClassCode.Enabled = false;
        }
    }
    protected void Button2_Click(object sender, EventArgs e)
    {
        UpdateModalShowFlag.Value = "true";
        Check.Value = "true";
        CreateTableRows();
    }
    private void CreateTableRows()
    {
        long h = long.Parse(LinkButtonIdCarrier.Value);
        List<StudentsClassSectionMapping.StudentsClassSectionMappingForm> allStudentsInClass = StudentsClassSectionMapping.GetStudentsinClass(h);
        ClassMaster.ClassMasterForm classCode = Schoolclasses.GetInfo(h);
        ClassCode.Text = classCode.cCode;
        List<StudentsClassSectionMapping.StudentsClassSectionMappingForm> allSectionsInClass = StudentsClassSectionMapping.GetSectionsinClass(h);
        foreach (StudentsClassSectionMapping.StudentsClassSectionMappingForm studentList in allStudentsInClass)
        {
            TableRow row = new TableRow();
            TableCell cell1 = new TableCell();
            TableCell cell2 = new TableCell();
            TableCell cell3 = new TableCell();
            DropDownList t = new DropDownList();
            t.Items.Add("No Section");
            foreach (StudentsClassSectionMapping.StudentsClassSectionMappingForm sectionList in allSectionsInClass)
            {
                t.Items.Add(sectionList.ssSection);
                t.Items[t.Items.Count - 1].Value = sectionList.ssSectionID.ToString();
            }
            t.Attributes.Add("class", "form-control");
            t.ID = studentList.ssStudentId.ToString();
            cell1.Text = studentList.ssName;
            cell2.Text = studentList.ssRegistrationNumber;
            cell3.Controls.Add(t);
            row.Cells.Add(cell1);
            row.Cells.Add(cell2);
            row.Cells.Add(cell3);
            Table1.Rows.Add(row);
        }
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        CreateTableRows();
        long h = long.Parse(LinkButtonIdCarrier.Value);
        List<StudentsClassSectionMapping.StudentsClassSectionMappingForm> allStudentsInClass = StudentsClassSectionMapping.GetStudentsinClass(h);
        foreach (StudentsClassSectionMapping.StudentsClassSectionMappingForm studentList in allStudentsInClass)
        {
            DropDownList d = Table1.FindControl(studentList.ssStudentId.ToString()) as DropDownList;
            if (d != null)
            {

                if (d.SelectedIndex != 0)
                {
                    StudentsClassSectionMapping.StudentsClassSectionMappingForm studentSectionMapping = new StudentsClassSectionMapping.StudentsClassSectionMappingForm();
                    studentSectionMapping.ssClassId = h;
                    studentSectionMapping.ssStudentId = studentList.ssStudentId;
                    studentSectionMapping.ssStudentId = long.Parse(d.SelectedItem.Value);
                    StudentsClassSectionMapping.addSectionStudentMapping(studentSectionMapping);
                }
                else 
                {
                    StudentsClassSectionMapping.StudentsClassSectionMappingForm studentSectionMapping = new StudentsClassSectionMapping.StudentsClassSectionMappingForm();
                    studentSectionMapping.ssClassId = h;
                    studentSectionMapping.ssStudentId = 0;
                    studentSectionMapping.ssStudentId = 0;
                    StudentsClassSectionMapping.addSectionStudentMapping(studentSectionMapping);
                }
            }
        }
    }

在ASP.NET中创建动态下拉列表后,无法在回发时存储信息

它消失了,因为你在页面上动态添加了它。如果你想要回它或想要保留动态创建的控制,你需要重新创建,需要动态添加。

下面是一个很好的例子:如何在ASP中动态创建控件。. NET并从中检索值