DataGrid中插入CheckBox进行单选
DateGrid使用比较方便。至少相对而言要比采用直接输出HTML代码的方式简单得多。
如果数据库比较大,那么要采用分页的话,那么DateGrid的使用比起输出HTML的方法要更加简单。
下面的方法是好不容易从一个地方找到的,采用了JAVE脚本。
首先在aspx文件的HTML代码中插入下面JAVA代码:
<SCRIPT language="JavaScript">
function SetCheckBoxState()
{
var dom=document.all;
var el=event.srcElement;
if(el.tagName=="INPUT"&&el.type.toLowerCase()=="checkbox")
{
for(i=0;i<dom.length;i++)
{
if(dom[i].tagName=="INPUT"&&dom[i].type.toLowerCase()=="checkbox")
{
dom[i].checked=false;
}
}
}
el.checked=!el.checked;
}
</SCRIPT>
function SetCheckBoxState()
{
var dom=document.all;
var el=event.srcElement;
if(el.tagName=="INPUT"&&el.type.toLowerCase()=="checkbox")
{
for(i=0;i<dom.length;i++)
{
if(dom[i].tagName=="INPUT"&&dom[i].type.toLowerCase()=="checkbox")
{
dom[i].checked=false;
}
}
}
el.checked=!el.checked;
}
</SCRIPT>
这是一个调用函数用来判断CheckBox是否被选中。
向aspx文件中添加DateGrid控件,点击控件,右键打开属性生成器。选择列,添加模板列,退出。编辑模板列,向模板列Item Template中添加CheckBox控件,命名为chkExport,退出。
修改DateGrid控件事件,向ItemDataBound添加函数名DataGrid1_ItemDataBound,确定,进入函数编辑区。添加下面代码:
private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
if(e.Item.ItemIndex<0) return;
if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
System.Web.UI.WebControls.CheckBox chkExport;
chkExport=(CheckBox)e.Item.FindControl("chkExport");
chkExport.Attributes.Add("OnClick","SetCheckBoxState()");
e.Item.Attributes.Add("onmouseover","currentcolor=this.style.backgroundColor;this.style.backgroundColor='ffff33'");
e.Item.Attributes.Add("onmouseout","this.style.backgroundColor=currentcolor");
}
}
{
if(e.Item.ItemIndex<0) return;
if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
System.Web.UI.WebControls.CheckBox chkExport;
chkExport=(CheckBox)e.Item.FindControl("chkExport");
chkExport.Attributes.Add("OnClick","SetCheckBoxState()");
e.Item.Attributes.Add("onmouseover","currentcolor=this.style.backgroundColor;this.style.backgroundColor='ffff33'");
e.Item.Attributes.Add("onmouseout","this.style.backgroundColor=currentcolor");
}
}
如何使用呢?使用下面代码:
private void Button_View_Click(object sender, System.EventArgs e)
{
System.Web.UI.WebControls.CheckBox chkExport;
foreach (DataGridItem dgItem in DataGrid1.Items)
{
chkExport=(CheckBox)dgItem.FindControl("chkExport");
if(chkExport.Checked)
{
Response.Redirect("Search_view.aspx?SId="+dgItem.Cells[1].Text.ToString()+"&Name="+dgItem.Cells[2].Text.ToString());
}
}
}
{
System.Web.UI.WebControls.CheckBox chkExport;
foreach (DataGridItem dgItem in DataGrid1.Items)
{
chkExport=(CheckBox)dgItem.FindControl("chkExport");
if(chkExport.Checked)
{
Response.Redirect("Search_view.aspx?SId="+dgItem.Cells[1].Text.ToString()+"&Name="+dgItem.Cells[2].Text.ToString());
}
}
}
在dgItem中,Cell[0]是指CheckBox,后面的和你的表格一致。