「キー」または[0]の列を非表示にしようとしています。また、エンドユーザーがクリック/クリック解除できるチェックボックスを以下のコードに設定しようとしています。デフォルトでは、チェックボックスをオフの状態に設定しました。
このコードdgvPunchs.Columns[0].Hidden = true;
は、列を非表示にする方法を見つけた方法ですが、次のエラーでエラーになります。
"オブジェクト参照がオブジェクト インスタンスに設定されていません。"
また、現在チェックボックスが表示されていますが、エンドユーザーはそれらをクリックできません。私は困惑しています。助けてください!:)
protected void GenerateSalaryPunchesTable()
{
this.dgvPunchs.Rows.Clear();
string[] DateRange = this.cboPayPeriods.SelectedItem.Text.ToString().Replace(" ", "").Split('-');
DataTable pDates = new DataTable();
pDates.Columns.Add("Key");
pDates.Columns.Add("Date", System.Type.GetType("System.DateTime")); // Date Cell
pDates.Columns.Add("Worked", System.Type.GetType("System.Boolean")); //Worked CB
pDates.Columns.Add("Vaction", System.Type.GetType("System.Boolean")); //Vacation CB
pDates.Columns.Add("Sick", System.Type.GetType("System.Boolean")); //Sick CB
pDates.Columns.Add("Holiday", System.Type.GetType("System.Boolean")); //Holiday CB
pDates.Columns.Add("Error", System.Type.GetType("System.String")); //Error
foreach (DataColumn col in pDates.Columns)
{
col.ReadOnly = false;
}
pDates.Columns["Key"].ColumnMapping = MappingType.Hidden;
while (Convert.ToDateTime(DateRange[0]) <= Convert.ToDateTime(DateRange[1]))
{
if (Convert.ToDateTime(DateRange[0]).DayOfWeek != DayOfWeek.Saturday & Convert.ToDateTime(DateRange[0]).DayOfWeek != DayOfWeek.Sunday)
{
DataRow nRow = pDates.NewRow();
nRow["Key"] = Convert.ToDateTime(DateRange[0].ToString()).ToShortDateString();
nRow["Date"]= Convert.ToDateTime(DateRange[0].ToString()).ToShortDateString();
nRow["Worked"] = 0;
nRow["Vaction"] = 0;
nRow["Sick"] = 0;
nRow["Holiday"] = 0;
nRow["Error"] = "";
pDates.Rows.Add(nRow);
}
DateRange[0] = Convert.ToDateTime(DateRange[0]).AddDays(1).ToShortDateString();
}
dgvPunchs.DataSource = pDates;
dgvPunchs.DataBind();
dgvPunchs.Columns[0].Hidden = true;
}