我是新手,第一次写blog.是我自己在做项目时遇到的问题以及解决方法、记录下来。希望对遇到同样问题的人有点帮助!也请大家多多指教!
前台代码:
<asp:GridView ID="GridviewDeptAuditList" AutoGenerateColumns="false" runat="server"
GridLines="none" Width="100%"
<AlternatingRowStyle CssClass="alt" />
<Columns>
<asp:TemplateField ItemStyle-Width="6%">
<HeaderTemplate>
<asp:CheckBox ID="selectAll" runat="server" οnclick="getAllCheckBox(this)" />
<span>全选</span>
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox ID="itemSelect" runat="server" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField ItemStyle-Width="5%">
<HeaderTemplate>
查看</HeaderTemplate>
<ItemTemplate>
<a href='<%#GetAllUrl(Eval("ID")) %>'>查看</a>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField HeaderText="流程名称" DataField="WorkFlowName" ItemStyle-Width="14%" />
<asp:BoundField HeaderText="子流程名称" DataField="SubWorkflowName" ItemStyle-Width="14%" />
</Columns>
</asp:GridView>
js实现全选效果:
<script type="text/javascript">
function getAllCheckBox(checkAll) {
var items = document.getElementsByTagName("input");
for (i = 0; i < items.length; i++) {
if (items[i].type == "checkbox") {
items[i].checked = checkAll.checked;
}
}
}
</script>
后台代码:
//注意:如果是在page_load里绑定GridView,一定要加上(!Page.IsPostBack),不然取不到值的。我就是在这上面吃了亏。
protected void Page_Load(object sender, EventArgs e)
{
this.EnableProgressBar = false;
if (!Page.IsPostBack)
{
BindGridView();
}
}
public void BindGridView()
{
this.Gridview1.DataSource = dataSource;
this.Gridview1.DataKeyNames = new string[] { "ID" };
this.Gridview1t.DataBind();
}
取值方法:
protected void BtnDeny_Click(object sender, EventArgs e)
{
// 取值
for (int i = 0; i < GridviewDeptAuditList.Rows.Count; i++)
{
CheckBox chb = (CheckBox)Gridview1.Rows[i].FindControl("itemSelect");
if (chb.Checked)
{
keys += GridviewDeptAuditList.DataKeys[i].Value.ToString() + ",";
}
}
}