我试图基于两个输入变量以编程方式绑定我的Checkboxlist;但我只得到一个复选框而不是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;
}
任何帮助appriciate
答案 0 :(得分:0)
实际上你在那里做的是循环结果并将checklistbox绑定在其中。所以如果你有三条记录,那么它将循环三次。你还提到clear()循环中的checkboxlist。因此,当它第三次出现时,它将清除复选框列表并仅绑定最后一条记录。那就是你在复选框列表上只得到一条记录。
所以删除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();