2014-01-04 2 views
1

Я не уверен, что я делаю неправильно. Я понимаю сообщение об ошибке, но не знаю, как исправить проблему. У меня есть сетка, в которой у меня установлен флажок, и я хочу получить ее значение, проверить или снять флажок.Получение значения checkbox из gridview

В gv_RowUpdating у меня есть следующий код, который работает с другими элементами управления, такими как текстовое поле, но не с флажком.

bool active = ((CheckBox)gvLinks.Rows[e.RowIndex].Cells[6].Controls[0]).Checked; 

Ошибка, которую я получаю, это Unable to cast object of type 'System.Web.UI.LiteralControl' to type 'System.Web.UI.WebControls.CheckBox'.

Я столкнулся с несколькими примерами, но ни один из них, который я видел, не идет так же, как я. Примерами могут быть итерации на элементы управления gridview или с использованием конструкции FindControl. В моем случае флажок присутствует и имеет значение, но проблема связана с кастингом (я думаю). Благодарю.

ответ

1

Первый элемент управления в этой ячейке - это не CheckBox, вы думаете, что это так. Предположим, что gvLinks.Rows[e.RowIndex] безопасно доставит вам нужную вам строку. Постарайтесь что-то это

CheckBox cxbx = gvLinks.Rows[e.RowIndex].FindControl("CheckBoxIdName") as CheckBox; 
bool active=cxbx.Checked; 

обозначаемых от: Unable to cast object of type ‘System.Web.UI.LiteralControl’ Error

+0

Хорошо, это подобные примеры, которые я видел, что я не понимаю, что я следующий код для текста и они работают без необходимости делать «FindControl», как это »string linkText = ((TextBox) gvLinks.Rows [e.RowIndex] .Cells [3] .Controls [0]). Text;'. Почему это? – Risho

3

Попробуйте

CheckBox chkb = (CheckBox)row.FindControl("chkb"); 

    if (((CheckBox)row.FindControl("chkb")).Checked) 
    { 
     //Your Code 
    } 
Смежные вопросы