столбцы с данными не доступны C # ASP.NET - PullRequest
1 голос
/ 10 августа 2010

У меня есть этот набор данных

public partial class class1
{
  private DataTable dt;
  protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
           dt.Columns.Add("Col1", System.Type.GetType("System.String"));
           dt.Columns.Add("Col2", System.Type.GetType("System.String"));
           bind();
        }
    }
}

private void bind()
{
    //database call
    //loop 
    dt.Rows.Add(col1_value.ToString(), col2_value.ToString(), col3.ToString());
    // populate the dropdown list with the database entries
}

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
   DataRow[] datarow;
   variable1=  DropDownList1.SelectedValue;
   datarow = dt.Select( dt.Columns["col1"] + DropDownList1.SelectedValue);
   variable2 = datarow.GetValue(1).ToString();
}

Когда вызывается событие selectedindexchange, в строке datarow = dt.Select( dt.Columns["col1"] + DropDownList1.SelectedValue); появляется сообщение об ошибке, говоря, что столбец не существует.Все строки и столбцы из таблицы данных теряются из таблицы данных при выполнении selectedIndexChanged.Чего мне здесь не хватает?

Я хочу избежать хранения данных в сеансе или в состоянии просмотра.Кроме того, вопрос в том, почему данные становятся пустыми.Есть ли способ избежать повторного заселения всех данных, которые есть в сообщении?Если у меня есть переменная класса строки, которая не становится пустой после обратной передачи или делает это.

Ответы [ 3 ]

3 голосов
/ 10 августа 2010

Удалите if (!IsPostBack) .... Вы должны заполнять datatable dt каждый раз, когда отправляете обратно, так как вы не храните его где-либо в viewstate или сеансе ....

1 голос
/ 10 августа 2010

Это может быть связано с вашим состоянием (if (!IsPostBack)), indexoted событие вызывает обратную передачу , поэтому столбцы никогда не добавляются в таблицу данных. Вы должны избавиться от этого условия или заполнить вашу таблицу данных в другом месте (возможно, даже вашим обработчиком событий для события с индексированием).

1 голос
/ 10 августа 2010

Вы добавляете столбцы программно в событие Page_Load. Событие SelectedIndexChanged вызывает обратную передачу, и ваша логика в Page_Load добавляет столбцы, только когда запрос НЕ является обратной передачей. Это означает, что столбцы не добавляются обратно при каждой обратной передаче, как это должно быть, если вы хотите добавить их программно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...