2014-11-02 4 views
0

Вот мой фрагмент кода ASP.NET.Невозможно наложить объект типа «System.Web.UI.HtmlControls.HtmlForm» на тип «System.Web.UI.WebControls.GridViewRow»

Я пытаюсь выбрать строку GridView и добавить выбранные элементы строки в переменную сеанса.

// ======================== MyGridView ======================== 

protected void GridView_MyGridView_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    // Get Selected Row Items 

    Items myitems = new Items(); 

    Session["Items"] = myitems; 

    ((Invoices)Session["Items"]).ItemNo = int.Parse(((GridViewRow)(((WebControl)(sender)).Parent.Parent)).Cells[0].Text);  
} 

Я НЕ хочу использовать кнопку clickable select, которая поставляется с столбцами GridView.

Я обрабатываюсь следующий код:

protected void GridView_MyGridView_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     e.Row.Attributes["onmouseover"] = "this.style.cursor='pointer';this.style.textDecoration='underline';"; 
     e.Row.Attributes["onmouseout"] = "this.style.textDecoration='none';"; 
     e.Row.ToolTip = "Click to Select a Visit."; 
     e.Row.Attributes["onclick"] = Page.ClientScript.GetPostBackClientHyperlink(sender as GridView, "SELECT$" + e.Row.RowIndex); 
    } 
} 

Теперь, когда я запускаю программу, я получаю следующее сообщение об ошибке, как только GridView выбранных изменения строки:

Невозможно привести объект введите «System.Web.UI.HtmlControls.HtmlForm», чтобы ввести «System.Web.UI.WebControls.GridViewRow».

Оставить отзыв.

ответ

0

Не уверен, что вы пытаетесь сделать, но ваш прилив - вот что вызывает его. Ваш вызов Parent.Parent заходит слишком далеко вверх по дереву, и вы попали в контейнер формы и больше не находитесь в GridView.

Вместо броска вы пытаетесь, почему бы не просто попробовать:

GridViewRow row = GridView_MyGridView.SelectedRow; 
((Invoices)Session["Items"]).ItemNo = int.Parse(row.Cells[0].Text); 

Имейте в виду, это все равно будет ошибка, если нет текста в ячейке, так что вы можете захотеть взглянуть на обработку, что с дополнительной логикой или TryParse().

+0

Сетка содержит данные. Ваш предлагаемый код работает только в том случае, если я использую столбец select в шаблоне GridView. Что я пытаюсь сделать, так это удалить эту кнопку выбора перед каждой строкой GridView и использовать e.row.Attributes для выбора строки GridView. – CyborgHead

+0

Я пересмотрел свой код, и теперь он работает с использованием вашего предлагаемого кода. – CyborgHead

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

  • Нет связанных вопросов^_^