ameyad09 Ответов: 1

Indexoutofrangeexception :в позиции 0 нет строки


Я очень новичок в C#, поэтому просматривал некоторые проекты в интернете.Я не смог запустить этот проект

Я получаю следующую ошибку, когда нажимаю на кнопку входа в систему:

В позиции 0 нет строки
В частности, из изображения 3.ImageUrl = HDT. Rows[0] ["изображение"].ToString (); строка.

DS_HOUSE.HOUSE_SELECTDataTable HDT = new DS_HOUSE.HOUSE_SELECTDataTable();
DS_HOUSETableAdapters.HOUSE_SELECTTableAdapter HAdapter = new 
DS_HOUSETableAdapters.HOUSE_SELECTTableAdapter();

 protected void Page_Load(object sender, EventArgs e)
{
   UDT = UAdapter.Select_By_UID(Convert.ToInt32(Session["uid"].ToString()));
   HDT = HAdapter.Select_By_SNAME_BLOCKNO(UDT.Rows[0]["societyname"].ToString(), Convert.ToInt32(UDT.Rows[0]["Houseid"].ToString()));
   Image3.ImageUrl = HDT.Rows[0]["image"].ToString();
   lblsname.Text = HDT.Rows[0]["sname"].ToString();
   lblbno.Text = HDT.Rows[0]["blockno"].ToString();
   lbltype.Text = HDT.Rows[0]["type"].ToString();
   ViewState["HID"] = HDT.Rows[0]["HID"].ToString();
}



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

[Исходный код проекта с файлом резервной копии базы данных прилагается здесь]

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

Я попытался поместить код в блок if с помощью


 protected void Page_Load(object sender, EventArgs e)
   {
         
        lblsell.Text = "";
        UDT = UAdapter.Select_By_UID(Convert.ToInt32(Session["uid"].ToString()));
        HDT = HAdapter.Select_By_SNAME_BLOCKNO(UDT.Rows[0]["societyname"].ToString(), Convert.ToInt32(UDT.Rows[0]["Houseid"].ToString()));
if (HDT.Rows.Count > 0)
    {
            Image3.ImageUrl = HDT.Rows[0]["image"].ToString();
            lblsname.Text = HDT.Rows[0]["sname"].ToString();
            lblbno.Text = HDT.Rows[0]["blockno"].ToString();
            lbltype.Text = HDT.Rows[0]["type"].ToString();
            ViewState["HID"] = HDT.Rows[0]["HID"].ToString();
        
    }
}


Я смог войти в систему, однако мне не удалось получить подробную информацию из таблицы общества.

1 Ответов

Рейтинг:
1

Graeme_Grant

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

Если вы не знакомы с тем, как отлаживать проект, то это видео-отличное введение в то, как отлаживать проект.:Базовая отладка с помощью Visual Studio 2010-YouTube[^]


ameyad09

Я попробовал .Он говорит, что таблица Select_By_SNAME_BLOCKNO имеет счетчик 0, что означает, что она пуста.Но я понятия не имею, в чем дело.Когда я выполняю процедуру Select_By_SNAME_BLOCKNO она возвращает значения

Graeme_Grant

Если вы установите точку останова до выполнения запроса, а затем пройдете через нее и проверите результат, вы сможете понять, почему.

ameyad09

Теперь я обнаружил эту ошибку : некоторые столбцы показывают
Не удается вычислить выражение, так как код текущего метода оптимизирован ошибкой.Какие изменения мне нужны?