2012-02-28 3 views
0

У меня есть GridView с кнопками tempaltefield, я хочу создать сеанс со значением ячейки в выбранной кнопки подряд, кто может мне помочь я судимое это, но не работало:Создать сеанс в GridView ячейке

 
    protected void ImageButton1_Click1(object sender, ImageClickEventArgs e) 
    { 
    Session["mysession"] = GridView1.SelectedRow.Cells[1].Text; 
    } 
+2

вы получаете какие-либо ошибки/исключения? – Anuraj

+0

yes: Ссылка на объект не установлена ​​в экземпляр объекта. –

+0

Убедитесь, что GridView1.SelectedRow не равен нулю. – Anuraj

ответ

0

Прежде всего, если это только изображение в шаблоне, на самом деле вы не выбираете строку. Эта строка, вероятно, вызовет исключение, потому что SelectedRow имеет значение null. Но если вы используете команду для выбора, это правильно. Возможно, ваше событие (ImageButton1_Click1) не назначено вашему изображению (OnClick).

Вы можете попробовать что-то вроде этого:

protected void Page_Load(object sender, EventArgs e) 
    { 
     try 
     { 
      //Add and event RowDataBound 
      grvGrid.RowDataBound += new GridViewRowEventHandler(grvGrid_RowDataBound); 
     } 
     catch 
     { 
      //...throw 
     } 
    } 

    protected void grvGrid_RowDataBound(object sender, GridViewRowEventArgs e) 
    { 
     try 
     {     
      if (e.Row.RowType == DataControlRowType.Header) 
      { 
       //... 
      } 

      if (e.Row.RowType == DataControlRowType.DataRow) 
      {   
       //Add an ImageButton foreach row in GridView 
       ImageButton ibtImageAlt = new ImageButton(); 
       ibtImageAlt.ImageUrl = "App_Images/y.gif"; 

       //ImageButton's ID will be the index of the row 
       ibtImageAlt.ID = e.Row.RowIndex.ToString();      
       ibtImageAlt.ForeColor = System.Drawing.Color.White; 
       ibtImageAlt.Font.Overline = false; 
       ibtImageAlt.Click += ibtImageAlt_Click; 
      } 
     } 
     catch 
     { 
     //...throw 
     } 
    } 

    protected void ibtImageAlt_Click(object sender, EventArgs e) 
    { 
     try 
     { 
      //Catch the ImageButton ID and the row in GridView 

      //An example to catch the value of the row selected by the ImageButton 
      Int32 intIndexRow = Convert.ToInt32(((ImageButton)sender).ID); 
      String strTest = grvGrid.Rows[intIndexRow].Cells[0].Text; 
     } 
     catch 
     { 
      //...throw 
     } 
    } 
+0

Я ошибаюсь, это не кнопка изображения, но больше любой кнопки изображения назначается строке gridview –

+0

(ImageButton1_Click1), потому что она работает для других сеансов. –

+0

Да, вы можете использовать Session ["mysession"] = GridView1.DataKeys [e.RowIndex] ["Id"]. Value.ToString() ;. Но убедитесь, что у вас есть имя grv.DataKeysNames для идентификатора вашего поля. IE: DataKeysNames = "Id" . И не забудьте включить «.value» перед «toString()». –

Смежные вопросы