2012-06-02 2 views
0

Я пытаюсь получить конкретное значение ячейки столбца gridview, но получил ошибку NullReferenceException. Я не знаю, почему, потому что я использую все элементы управления в правильном порядке и с правильным кодом. Пожалуйста, предложите мне решение относительно того же.NullReferenceException при получении определенного значения ячейки из GridView

Код:

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(); 
    } 

My Grid View:

enter image description here Спасибо заранее.

+0

Проверили ли вы какие строки .Cells [0] содержит? –

+0

Можете ли вы показать ur код aspx –

ответ

1

Возможно ли обработать событие SelectedIndexChanged вместо ссылки? Если это так - просто следовать примеру MSDN здесь - http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.selectedrow.aspx

В противном случае вам нужно проверить row для нуля, поскольку нет никакой гарантии, что есть выбранная строка, когда происходит ваше событие:

GridViewRow row = gvdetails.SelectedRow; 
if (row == null) 
{ 
    // Probably display some text to a user asking to select a row 
    return; 
} 
Смежные вопросы