从GridView获取特定单元格值时出现NullReferenceException

时间:2012-06-02 08:58:38

标签: c# asp.net gridview

我试图获取gridview列的特定单元格值,但收到NullReferenceException错误。我不知道为什么,因为我以正确的方式和正确的代码使用所有控件。请建议我解决方案。

代码:

 protected void lnkedit_Click(object sender, EventArgs e)
    {
        // LinkButton btndetails = sender as  LinkButton;
        //GridViewRow gvrow = (GridViewRow)btndetails.NamingContainer;
        //lblID.Text = gvdetails.DataKeys[gvrow.RowIndex].Value.ToString();
        ////  lblCompanyName.Text = gvrow.Cells[1].Text;
        //txt_ComName.Text = gvrow.Cells[1].Text;
        //txt_ShortName.Text = gvrow.Cells[2].Text;
        //txt_email.Text = gvrow.Cells[3].Text;
        //txt_website.Text = gvrow.Cells[4].Text;
        string str = ("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=F:/ATTt/App_Data/eTimeTrackLite1.mdb;Persist Security Info=False;");
        OleDbConnection conn = new OleDbConnection(str);
        conn.Open();
        OleDbCommand cmd = new OleDbCommand();
        GridViewRow row = gvdetails.SelectedRow;


        string index = row.Cells[0].Text.ToString();  **/*Error occure on this line*/**

        cmd.CommandText = "select CompanyId from Companies where CompanyFName = '"+index+"'";
        // cmd.Parameters.AddWithValue("@CompanyId", Convert.ToInt32(lblID.Text));
        cmd.Connection = conn;
        OleDbDataAdapter da = new OleDbDataAdapter();
        DataSet ds = new DataSet();
        da.Fill(ds);
        DataTable dt = new DataTable();
        dt = ds.Tables[0];
        CompanyId = dt.Rows[0]["CompanyId"].ToString();
       // da.UpdateCommand = cmd;

       // cmd.ExecuteNonQuery();
        this.ModalPopupExtender1.Show();
    }

我的网格视图:

enter image description here 提前谢谢。

1 个答案:

答案 0 :(得分:1)

是否可以处理SelectedIndexChanged事件而非链接点击?如果是这样 - 只需按照此处的MSDN示例 - http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.selectedrow.aspx

否则,您需要检查row是否为null,因为无法保证在您的事件发生时存在选定的行:

GridViewRow row = gvdetails.SelectedRow;
if (row == null)
{
    // Probably display some text to a user asking to select a row
    return;
}