在GridView

时间:2016-11-01 09:31:30

标签: c# asp.net sql-server-2008

我使用@Tim Schmelter代码(Creating Gridview column Header by loading data from database)为ItemTemplate复选框工作正常但是当使用HeaderTemplate时,我在ITemplate收到错误 - > CB_DataBinding - > object dataValue =((DataRowView)container.DataItem)[_ columnName];因为DataItem是空的,所以说NullReference。 mycode的:

private void CreateGridColumns()
        {
            var tblAllowanceGroup = GetAllowanceGroup();
            foreach (DataRow row in tblAllowanceGroup.Rows)
            { ...
              field.HeaderTemplate = new GridViewCheckBoxTemplate(ListItemType.Header, AllowanceGroupName);
              gvEmpSalaryStructure.Columns.Add(field);
            }
private void BindGrid()
        {
            var tblAllowanceGroup = GetAllowanceGroup();
            DataSet dsgrid = new DataSet();
            DataTable dtgrid = new DataTable();
            var empRow = dtgrid.NewRow();
            dtgrid.Columns.Add("EmpName");


foreach (DataRow row in tblAllowanceGroup.Rows)
            {
                String AllowanceGroupName = row.Field<String>("AllowanceName");
                //Add column from domain-name
                dtgrid.Columns.Add(AllowanceGroupName, typeof(bool)); 

//CheckBox-Checked is a boolean
    //This gives me only Header Text of Gridview
                    }

我希望GridView动态生成包含Checkboxes的Headers。如果我想让ITemplate CB_DataBinding与ListItemType.Header一起使用,那么我想要改变。

当我们选中Header列中的复选框时,应该检查该列中的所有复选框。

先谢谢。

1 个答案:

答案 0 :(得分:1)

您可以使用gridview的OnRowDataBound事件来循环标题行并在每个Cell中插入CheckBox。

    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.Header)
        {
            for (int i = 0; i < e.Row.Cells.Count; i++)
            {
                CheckBox checkBox = new CheckBox();
                checkBox.CssClass = "headerCheckBox";
                checkBox.ID = "headerCheckBox_" + i;
                e.Row.Cells[i].Controls.Add(checkBox);
            }
        }
    }

现在你可以将一个jQuery监听器绑定到CheckBox类来处理整个列的检查/取消检查。