checkbox翻页后仍被选择问题
前段时间在做私人医生的后台管理,在做删除操作是要用到单个删除和批量删除。批量删除就涉及到本页选中的名单翻页后再回到本页仍被选中的问题。开始的时候
用的是DataGrid,里面加Textbox但是翻页后就不能继续被选中。于是自己做了一个,因为接触.net时间不长,不知道各位达人是怎么实现的
.aspx页中是一个服务器端的Table控件和几个上下翻页的LinkButton控件。
选择
资格证号
姓名
城市
医院
科室
职称
头像
第一页
上一页
下一页
最后一页
.aspx.cs中主要是关于添加Checkbox选中问题的
if (ds.Tables[0].Rows.Count > 0)
{
//recordID = "";
//strClicked = "";
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
TableRow tRow = new TableRow();
tb.Controls.Add(tRow);
TableCell tCellCheckBox = new TableCell();
tRow.Controls.Add(tCellCheckBox);
System.Web.UI.WebControls.CheckBox cb = new CheckBox();
cb.Checked = false;
cb.AutoPostBack = false;
cb.Text = ds.Tables[0].Rows[i]["doctor_id"].ToString();
if (strText.Contains(ds.Tables[0].Rows[i]["doctor_paper"].ToString()))
{
cb.Checked = true;
recordID += ds.Tables[0].Rows[i]["doctor_paper"].ToString() + "|";
}
switch (i)
{
case 0:
cb.CheckedChanged += new EventHandler(ChkBox0_Clicked);
break;
case 1:
cb.CheckedChanged += new EventHandler(ChkBox1_Clicked);
break;
case 2:
cb.CheckedChanged += new EventHandler(ChkBox2_Clicked);
break;
case 3:
cb.CheckedChanged += new EventHandler(ChkBox3_Clicked);
break;
case 4:
cb.CheckedChanged += new EventHandler(ChkBox4_Clicked);
break;
default:
break;
}
tCellCheckBox.Controls.Add(cb); ....
........
}
这 里为每个Checkbox添加了一个CheckChanged事件,当状态改变时事件被触发.这里的strText是用于记录那个每页的哪个 CheckBox被选中的,记录的是checkbox相应行内容的ID号,如果被选中则checked=true,并且状态再次改变的话就把相应的ID从 strText中去掉。下面是ChkBox_Clicked的事件,其他的与此一样
private void ChkBox1_Clicked(object sender, EventArgs e)
{
string strNO = ReturnNo(1);
///////
Boolean ISCHECKED = false;
if (strClicked.Contains("chkbox1") || strText.Contains(strNO))
{
string[] strArray = strClicked.Split('|');
string s = "";
for (int i = 0; i < strArray.Length - 1; i++)
{
if (strArray[i].Contains("chkbox1"))
s += "";
else
s += strArray[i] + "|";
}
string[] strArrayID = strText.Split('|');
string sss = "";
for (int i = 0; i < strArrayID.Length - 1; i++)
{
if (strArrayID[i] == strNO)
sss += "";
else
sss += strArrayID[i] + "|";
}
strClicked = s;
strText = sss;
ISCHECKED = false;
}
else
{
strClicked += "chkbox1|";
strText += strNO + "|";
}
}
这样,当上下翻页的时候一被选中的记录依然被选中
.aspx页中是一个服务器端的Table控件和几个上下翻页的LinkButton控件。
.aspx.cs中主要是关于添加Checkbox选中问题的
if (ds.Tables[0].Rows.Count > 0)
{
//recordID = "";
//strClicked = "";
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
TableRow tRow = new TableRow();
tb.Controls.Add(tRow);
TableCell tCellCheckBox = new TableCell();
tRow.Controls.Add(tCellCheckBox);
System.Web.UI.WebControls.CheckBox cb = new CheckBox();
cb.Checked = false;
cb.AutoPostBack = false;
cb.Text = ds.Tables[0].Rows[i]["doctor_id"].ToString();
if (strText.Contains(ds.Tables[0].Rows[i]["doctor_paper"].ToString()))
{
cb.Checked = true;
recordID += ds.Tables[0].Rows[i]["doctor_paper"].ToString() + "|";
}
switch (i)
{
case 0:
cb.CheckedChanged += new EventHandler(ChkBox0_Clicked);
break;
case 1:
cb.CheckedChanged += new EventHandler(ChkBox1_Clicked);
break;
case 2:
cb.CheckedChanged += new EventHandler(ChkBox2_Clicked);
break;
case 3:
cb.CheckedChanged += new EventHandler(ChkBox3_Clicked);
break;
case 4:
cb.CheckedChanged += new EventHandler(ChkBox4_Clicked);
break;
default:
break;
}
tCellCheckBox.Controls.Add(cb); ....
........
}
这 里为每个Checkbox添加了一个CheckChanged事件,当状态改变时事件被触发.这里的strText是用于记录那个每页的哪个 CheckBox被选中的,记录的是checkbox相应行内容的ID号,如果被选中则checked=true,并且状态再次改变的话就把相应的ID从 strText中去掉。下面是ChkBox_Clicked的事件,其他的与此一样
private void ChkBox1_Clicked(object sender, EventArgs e)
{
string strNO = ReturnNo(1);
///////
Boolean ISCHECKED = false;
if (strClicked.Contains("chkbox1") || strText.Contains(strNO))
{
string[] strArray = strClicked.Split('|');
string s = "";
for (int i = 0; i < strArray.Length - 1; i++)
{
if (strArray[i].Contains("chkbox1"))
s += "";
else
s += strArray[i] + "|";
}
string[] strArrayID = strText.Split('|');
string sss = "";
for (int i = 0; i < strArrayID.Length - 1; i++)
{
if (strArrayID[i] == strNO)
sss += "";
else
sss += strArrayID[i] + "|";
}
strClicked = s;
strText = sss;
ISCHECKED = false;
}
else
{
strClicked += "chkbox1|";
strText += strNO + "|";
}
}
这样,当上下翻页的时候一被选中的记录依然被选中