gani7787 Ответов: 1

Ошибка выполнения Javascript: не удалось установить свойство 'classname' неопределенной или нулевой ссылки


Unable to set property 'className' of undefined or null reference.

When i click the selected row in a grid i am getting the following error. It should fire gridview_selectedIndexChanged() event. but it will not fire anything. rather than it will shoe the below error.

Error : JavaScript runtime error: Unable to set property 'className' of undefined or null reference.

Error code :

ASPX Page

  var gridviewID = "<%=grdSearch.ClientID%>";         var gridview = null;

        var selectedRowIndex = -1;

        $(document).ready(function () {             gridview = $('#' + gridviewID);

        });

        function RowMouseOver(rowIndex) {             if (selectedRowIndex == rowIndex) return;

            var gridviewID = "<%=grdSearch.ClientID%>";             $('#' + gridviewID)[0].rows[rowIndex + 1].className = 'GridviewScrollItemHover';

        }

        function RowMouseOut(rowIndex) {             if (selectedRowIndex == rowIndex) return;

            var gridviewID = "<%=grdSearch.ClientID%>";             $('#' + gridviewID)[0].rows[rowIndex + 1].className = 'GridviewScrollItem';

        }

        function RowSelect(rowIndex) {             if (selectedRowIndex == rowIndex) return;

            RowReset(selectedRowIndex);

            selectedRowIndex = rowIndex;

            var gridviewID = "<%=grdSearch.ClientID%>";             $('#' + gridviewID)[0].rows[rowIndex + 1].className = 'GridviewScrollItemSelected';

        }

        function RowReset(rowIndex) {

            var gridviewID = "<%=grdSearch.ClientID%>";             $('#' + gridviewID)[0].rows[rowIndex + 1].className = 'GridviewScrollItem';

        }

ASPX.Vb

 

If e.Row.RowType = DataControlRowType.DataRow Then

               

If e.Row.RowType <> DataControlRowType.DataRow Then

                   

Return

               

End If

                e.Row.Attributes(

"onmouseover") = String.Format("RowMouseOver({0});", e.Row.RowIndex)

                e.Row.Attributes.Add(

"style", "cursor:pointer;")

                e.Row.Attributes(

"onmouseout") = String.Format("RowMouseOut({0});", e.Row.RowIndex)

                e.Row.ToolTip =

"Click to select row"

                e.Row.Attributes(

"onclick") = String.Format("RowSelect({0});", e.Row.RowIndex)

           

End If


my Requirment is :

When i selecte the particular row, it should highlight the row in diff color at the same time the index value should get display in another gridview

pls. help me to solve this problem. i am unable to find out exact solution for this.


Что я уже пробовал:

функция RowReset(rowIndex) {
$('#' + gridviewID +'элемента tbody &ГТ; тр').эквалайзер(параметр rowindex+1).добавление('GridviewScrollItem');
}

Но, не работает...

1 Ответов

Рейтинг:
0

Karthik_Mahalingam

Проверьте объект на наличие null значение перед доступом к members объекта

var row = $('#' + gridviewID)[0].rows[rowIndex + 1]
if(row1 != null){
     row1.className = 'Your Class Name'
}


gani7787

Спасибо за ваш ответ,

но gridview_selectedIndexchanged не срабатывает после использования этого кода...

Karthik_Mahalingam

это не имеет никакого отношения к событию сервера. возможно, вы что-то упускаете.

gani7787

Спасибо.

Теперь я решил ошибку rowindex.

Но в основном мне нужно обсудить два важных момента.

Сценарий: когда я выбрал строку в gridview1, то она должна привести все записи сотрудников в gridview2 на основе выбора индекса gridview1.

Problem_1: в gridview у меня есть "n" количество строк. когда я выбираю, то он должен сохранять ту же позицию, даже если прокручивать строки. приведенный ниже код работает для выбранных строк в том же положении. Но SeletedIndex изменил событие, не стреляя

е.Подряд.Атрибутами("onmouseover модели") = строковый.Формат ("RowMouseOver({0});", e. Row.RowIndex)

е.Подряд.Атрибутами("onmouseout") = строковый.Формат ("RowMouseOut ({0});", e. Row.RowIndex)
е.Подряд.Атрибутами("кнопке") = строковый.Формат ("RowSelect({0});", e. Row.RowIndex) (событие не срабатывает)

Problem_2: предположим, что выбранная строка не сохраняет ту же позицию, но она принесет все записи в gridview2. Это означает, что selectedIndexchanged стреляет. Приведенный ниже код работает для этого.

е.Подряд.Атрибутами("onmouseover модели") = строковый.Формат ("RowMouseOver({0});", e. Row.RowIndex)
е.Подряд.Атрибутами("onmouseout") = строковый.Формат ("RowMouseOut ({0});", e. Row.RowIndex)
'е.Подряд.Атрибутами("кнопке") = строковый.Формат ("RowSelect({0});", e. Row.RowIndex) (событие не срабатывает)
е.Подряд.Атрибутами.Добавить ("onclick", стр.ClientScript.GetPostBackEventReference(grdSearchResult, "выделить$" + Эл.Подряд.Параметр rowindex.ToString ())) (запуск события).

Мой сценарий заключается в том, что я хочу сохранить выбранную строку в том же положении, и она должна запустить событие selectedIndexchanged (оба сценария).

Ниже приведен общий сценарий



var gridviewID = " <%=grdSearchResult.ClientID%>";
ВАР GridView в = нуль;

var selectedRowIndex = -1;

$(документ).готово(функция () {
gridview = $ ('#' + gridviewID);

});

функция RowMouseOver(rowIndex) {
if (selectedRowIndex == rowIndex) return;

var gridviewID = " <%=grdSearchResult.ClientID%>";
$('#' + gridviewID)[0].строк[параметр rowindex + 1].GridviewScrollItemHover параметр className ='';


}

функция RowMouseOut(rowIndex) {
if (selectedRowIndex == rowIndex) return;

var gridviewID = " <%=grdSearchResult.ClientID%>";
$('#' + gridviewID)[0].строк[параметр rowindex + 1].GridviewScrollItem параметр className ='';



}

функция RowSelect(rowIndex) {
if (selectedRowIndex == rowIndex) return;

RowReset(selectedRowIndex);

selectedRowIndex = параметр rowindex;

var gridviewID = " <%=grdSearchResult.ClientID%>";
$('#' + gridviewID)[0].строк[параметр rowindex + 1].GridviewScrollItemSelected параметр className ='';

}

функция RowReset(rowIndex) {
var row = $ ('#' + gridviewID)[0]. rows[rowIndex + 1]
if (row != null) {
подряд.GridviewScrollItem параметр className =''
}

}



где находится проблема....?