首页 文章

文本框和标签数组如何在c#中的submit方法中获取值

提问于
浏览
0

我已经习惯在下拉列表中动态创建标签和文本框选择索引更改方法以及如何在提交方法中获取这些文本框值....

public partial class StudentMarklistEntry : System.Web.UI.Page
    {
      private Label[] sublabels = new Label[7];
      private TextBox[] subtextbox = new TextBox[7];

     protected void semDropDownList_SelectedIndexChanged(object sender, EventArgs e)
        {
            int sem = int.Parse(semDropDownList.SelectedItem.Text);
            string dept = DeptDropDownList.SelectedItem.Text;
                    if (sem != null)
            {
                SqlDataReader subject = Mlist.GetSubjects(d_id,sem);
                int i = 0;
                while (subject.Read())
                {
                    sublabels[i] = new Label();
                    subtextbox[i] = new TextBox();
                    sublabels[i].Text = sub;
                    sublabels[i].ID = (subject["SUB_ID"]).ToString();
                    markz[i] = Convert.ToString(subject["SUB_ID"]);
                    subtextbox[i].ID = "subtextbox"+i.ToString();
                    labelPlaceHolder.Controls.Add(sublabels[i]);
                    labelPlaceHolder.Controls.Add(new LiteralControl(""));
                   Textboxholder.Controls.Add(subtextbox[i]);
                   Textboxholder.Controls.Add(new LiteralControl(""));
        i++;

                }

                subject.Close();
            }

    protected void SaveButton_Click(object sender, EventArgs e)
        {


    }

    }

1 回答

  • 1

    您可以通过两种方式访问控制值

    通过占位符控件循环

    IList<string> selectedValues= new List<string>();
    foreach (Control control in placeHolderText.Controls)
    {
        if (control is TextBox)
        {
            var textBox = control as TextBox;
            selectedValues.Add(textBox.Text);
        }
    }
    

    使用request.form

    var keys = Request.Form.AllKeys.Where(formKey => formKey.Contains("subtextbox"));
    foreach (var formKey in keys)
    {
        selectedValues.Add(Request.Form[formKey]);
    }
    

    UPDATE

    关于控件在提交按钮单击时的可见性的问题,这是问题,因为您在下拉列表selectedindexchanged事件中创建文本框 . 在按钮单击事件中,占位符将为空,因为根本不创建控件 . 作为解决方法,您可以尝试以下方法 .

    创建一个函数如下

    private void CreateDynamicControls()
    {
        int sem = int.Parse(semDropDownList.SelectedItem.Text);
        string dept = DeptDropDownList.SelectedItem.Text;
        if (sem != null)
        {
            SqlDataReader subject = Mlist.GetSubjects(d_id, sem);
            int i = 0;
            while (subject.Read())
            {
                sublabels[i] = new Label();
                subtextbox[i] = new TextBox();
                sublabels[i].Text = sub;
                sublabels[i].ID = (subject["SUB_ID"]).ToString();
                markz[i] = Convert.ToString(subject["SUB_ID"]);
                subtextbox[i].ID = "subtextbox" + i.ToString();
                labelPlaceHolder.Controls.Add(sublabels[i]);
                labelPlaceHolder.Controls.Add(new LiteralControl(""));
                Textboxholder.Controls.Add(subtextbox[i]);
                Textboxholder.Controls.Add(new LiteralControl(""));
                i++;
    
            }
    
            subject.Close();
    
        }
    }
    

    在PageLoad(在!IsPostBack块外)和semDropDownList_SelectedIndexChanged事件中调用该函数 .

相关问题