SahuA Ответов: 1

Как устранить ошибку не удается найти таблицу 0 в поле со списком привязка с использованием трехуровневой архитектуры


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

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

Даль часть есть.............
public DataSet prno_combo(SqlCommand cmd)
        {
            DataSet ds = new DataSet();

           
                getcon();
                cmd.Connection = getcon();
                SqlDataAdapter adapt = new SqlDataAdapter(cmd);
                adapt.Fill(ds, "Purchase");
                DataRow dr = ds.Tables[0].NewRow();
                dr["Id"] = "Select";
                dr["Id"] = "0";
                ds.Tables[0].Rows.InsertAt(dr, 0);                             
                return ds;

}

 public DataSet store_combo(SqlCommand cmd)
        {
            DataSet ds = new DataSet();
            
                                 
                        getcon();
                        cmd.Connection = getcon();
                        SqlDataAdapter adapt = new SqlDataAdapter(cmd);
                        adapt.Fill(ds, "StoreMaster");
                        DataRow dr = ds.Tables[0].NewRow();
                        dr["StoreName"] = "Select";
                        dr["id"] = "0";
                        ds.Tables[0].Rows.InsertAt(dr, 0);
                        return ds;
                }

Бл часть есть..............


public DataSet BL_prno_combo(clsPRml mlprobj)
       {
           SqlCommand cmd = new SqlCommand();
           cmd.CommandType = CommandType.StoredProcedure;
           cmd.CommandText = "Prc_BindPurchaseMandate";
           return dlprobj.prno_combo(cmd);
       }

       public DataSet BL_store_combo(clsPRml mlprobj)
       {
           SqlCommand cmd = new SqlCommand();
           cmd.CommandType = CommandType.StoredProcedure;
           cmd.CommandText = "Prc_BindStore";
           return dlprobj.store_combo(cmd);

Форма изложения части такова......
public void BindPRnoCombo()
       {

               cbPRNo.DataSource = blprobj.BL_prno_combo(mlprobj).Tables[0];
               cbPRNo.ValueMember = "Id";
               cbPRNo.DisplayMember = "Id";
               cbPRNo.SelectedIndex = 0;


       }


       public void BindStoreCombo()
       {

               // ERROR OCCURS HERE
               cbStore.DataSource = blprobj.BL_store_combo(mlprobj).Tables[0];
               cbStore.ValueMember = "Id";
               cbStore.DisplayMember = "StoreName";
               cbStore.SelectedIndex = 0;

preety sunita

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

SahuA

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

Andy Lanng

Не могли бы вы показать нам, на какой линии происходит ошибка? Вы часто используете Table[0].
PS: не очень хорошая идея всегда предполагать, что будет таблица[0]. Вы должны справиться со случаем, когда вам не вернут столик.

SahuA

В этой строке возникает ошибка...........

cbStore.Источник данных = blprobj.BL_store_combo(mlprobj).Таблицы[0];

preety sunita

Пожалуйста, попробуйте отладить ваш слой DAL с помощью F11, я думаю, что должна быть проблема, и проверьте, есть ли у ds таблицы или нет в коде представления формы...

Dataset ds = новый набор данных();
ДС =blprobj.BL_store_combo(mlprobj);
если(ДС.таблицы.граф и gt; 0) // здесь проверка граф таблицы.
{
----------Ваш код ----------

}

1 Ответов

Рейтинг:
1

Nirav Prabtani

Всегда практикуйте проверку DataTable или DataSet, где бы вы его ни использовали.

if(ds!=null && ds.Tables.Count > 0){

//code here

}


или
if(dt!=null && dt.Rows.Count > 0){

//code here

}


Дайте мне знать для получения дополнительной помощи, если потребуется.


SahuA

когда я поместил эту команду для проверки таблицы и строк, она не выдала никакой ошибки, но и не показала никакого выпадающего списка во втором поле со списком,
Кроме того, когда я удалил метод первого combobox из события load, выпадающий список появляется во втором combobox.

Nirav Prabtani

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

Если у вас нет данных в вашем datatable. Как вы можете связать свои элементы управления ?