Я хочу скрыть определенный столбец с именем staffPassword
в datGridview
при нажатии btnViewAll
. Для которого я попробовал приведенный ниже код, но он не работает. Он отображает
"System.NullReferenceException: ссылка на объект не установлена на экземпляр объекта"
, а также отображается столбец Пароль.
ALTER PROCEDURE [dbo].[sp_GetStaff]
as
SELECT Stf.StaffId as 'Staff Id',
Stf.StaffName as 'Name',
Stf.staffUserName as 'Username',
Stf.staffPassword as 'Password',
Stf.staffPhone as 'Mobile No.',
Stf.staffRole as 'Role',
Stf.staffStatus as 'Role Status'
FROM tblStaff Stf ORDER BY Stf.StaffName ASC
public override void BtnViewAll_Click(object sender, EventArgs e)
{
loadData(dataGridViewStaff, "SNo", "sp_GetStaff");
dataGridViewStaff.Columns["staffPassword"].Visible = false;
}
public static void loadData(DataGridView gv, string colNameOfSerialNo, string getStoredProcedureName)
{
string cs = ........
SqlConnection con = new SqlConnection(cs);
SqlCommand cmd = new SqlCommand(getStoredProcedureName, con);
cmd.CommandType = CommandType.StoredProcedure;
DataTable dt = new DataTable();
SqlDataAdapter sda = new SqlDataAdapter(cmd);
sda.Fill(dt);
gv.DataSource = dt;
int rowCount = 1;
foreach (DataGridViewRow row in gv.Rows)
{
row.Cells[colNameOfSerialNo].Value = rowCount;
rowCount++;
}
}
ALTER PROC [dbo].[sp_GetStaffPassword]
@staffId varchar(150)
as
SELECT Stf.staffPassword as 'Password'
FROM tblStaff Stf WHERE staffID=@staffId
private void DataGridViewStaff_CellClick(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex > -1 && e.ColumnIndex > -1)
{
string cs =.......
SqlConnection con = new SqlConnection(cs);
SqlCommand cmd = new SqlCommand("sp_GetStaffPassword", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@staffId", staffID);
con.Open();
DataTable dt = new DataTable();
SqlDataReader sdr = cmd.ExecuteReader();
dt.Load(sdr);
con.Close();
txtPassword.Text = dt.Rows[0][0].ToString();
txtConfirmPassword.Text = dt.Rows[0][0].ToString();
txtPhoneNo.Text= dataGridViewStaff.Rows[e.RowIndex].Cells["Mobile No."].Value.ToString();
}
}