0

我正在尝试基于两个输入变量以编程方式绑定我的复选框列表;但我只得到一个复选框而不是 3 。

这是我的代码

这是我的业务层

 public class BALDisplayPanel2
{

    private string _mylabel;

    public string MyLabel
    {
        get { return _mylabel;  }
        set { _mylabel = value; }
    }

    private string _conditionlabel;

    public string ConditionLabel
    {
        get { return _conditionlabel; }
        set { _conditionlabel = value; }
    }


    private string _checkboxquestion;

    public string CheckBoxQuestion
    {
        get { return _checkboxquestion; }
        set { _checkboxquestion = value; }
    }

这是我的数据访问层

 public List<BALDisplayPanel2> DisplaySPanelQ(int tbid, int grdid)
    {

        SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["mynewdbConnectionString"].ConnectionString);
        conn.Open();
        SqlCommand cmd = new SqlCommand("esp_MyCheckboxProc", conn);
        cmd.CommandType = CommandType.StoredProcedure;
        List<BALDisplayPanel2> lst = new List<BALDisplayPanel2>();
        cmd.Parameters.AddWithValue("@Emp", tbid);
        cmd.Parameters.AddWithValue("@UnitNumber", grdid);

        SqlDataReader dr = cmd.ExecuteReader();

        while (dr.Read())
        {
            BALDisplayPanel2 unt = new BALDisplayPanel2();
            unt.CheckBoxQuestion = dr["CheckQuest"].ToString();
            unt.MyLabel = dr["MyLabel"].ToString();
            unt.ConditionLabel = dr["ConditionLabel"].ToString();

            //unt.LabelS = dr["LabelQ2"].ToString();
            lst.Add(unt);
        }

        conn.Close();
        return lst;

    }

这是我的 Default.cs 文件,我称之为复选框

        BALDisplayPanel2 bl = new BALDisplayPanel2();
        DALDisplayPanel2 dal = new DALDisplayPanel2();
        List<BALDisplayPanel2> lst = new List<BALDisplayPanel2>();
        lst = dal.DisplaySPanelQ(Convert.ToInt32(tbEmpID.Text), Convert.ToInt32(GridView1.SelectedRow.Cells[2].Text));

        foreach (var item in lst)
        {

            chbklstpanel3.Items.Clear();
            chbklstpanel3.DataSource = lst;
            chbklstpanel3.DataTextField = item.CheckBoxQuestion;

            lblpanel3.Text = item.MyLabel;
            lblCondition.Text = item.ConditionLabel;


            }

任何帮助

4

1 回答 1

0

实际上,您在那里所做的是将结果循环并在其中绑定复选框。所以在这里,如果你有三个记录,那么它将循环三次。您还提到 clear() 循环内的复选框列表。因此,当它第三次出现时,它将清除复选框列表并仅绑定最后一条记录。这就是您在复选框列表中仅获得一条记录的内容。

所以删除 foreach 循环,

    BALDisplayPanel2 bl = new BALDisplayPanel2();
    DALDisplayPanel2 dal = new DALDisplayPanel2();
    List<BALDisplayPanel2> lst = new List<BALDisplayPanel2>();
    lst = dal.DisplaySPanelQ(Convert.ToInt32(tbEmpID.Text), Convert.ToInt32(GridView1.SelectedRow.Cells[2].Text));


        chbklstpanel3.Items.Clear();
        chbklstpanel3.DataSource = lst;
        chbklstpanel3.DataTextField = item.CheckBoxQuestion;
        chbklstpanel3.DataBind();
于 2013-05-21T06:49:00.983 回答