2016-11-14 4 views
2

Я действительно изо всех сил, я уже работал над этим весь день,ASP.net ListBox - индекс выбора всегда -1 даже с IsPostBack

У меня есть ListBox, населенную в базе данных SQL.

я установить связывание ListBox в если (! This.ispostback) блок

У меня есть кнопка, которая в конечном итоге будет работать запрос и обновлять datebase, на основании того, что выбрано в ListBox.

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

вот код - пожалуйста, вы можете помочь

C#

protected void Page_Load (object sender, EventArgs e) 
    { 
     if(!this.IsPostBack) 
     { 
      bind(); 
     } 
    } 

private void bind() 
    { 
     DataSet ds = new DataSet(); 
     string constring = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString; 
     string queryShrewsbury = "Select Callsign, Info FROM Trucks WHERE Location Like'Shrewsbury'"; 
     //string queryDonnington = "Select Callsign, Info FROM Trucks WHERE Location Like'Donnington'"; 
     SqlConnection conn1 = new SqlConnection(constring); 
     conn1.Open(); 
     SqlDataAdapter adp = new SqlDataAdapter(queryShrewsbury, constring); 
     adp.Fill(ds); 
     Shrewsbury_listbox.DataSource = ds; 
     Shrewsbury_listbox.DataTextField = "Callsign"; 
     Shrewsbury_listbox.DataValueField = "Info"; 
     Shrewsbury_listbox.DataBind(); 
     conn1.Close(); 
} 


protected void Button1_Click(object sender, EventArgs e) 
    { 
     if (Shrewsbury_listbox.SelectedIndex == -1) 
     { 
      Response.Write("it didn't work"); 
     } 
     else 
     { 
      string value = Shrewsbury_listbox.SelectedItem.Value; 
      Response.Write(value + "it worked"); 
     } 
    } 

HTML

< 

body> 

    <form id="form1" runat="server" enableviewstate="true"> 

    <asp:ListBox ID="Shrewsbury_listbox" runat="server" Height="153px" Width="225px" EnableViewState="true" ></asp:ListBox> 

    <br /> 
    <asp:Button ID="Button1" runat="server" Text=">>" OnClick="Button1_Click" Height="53px" Width="221px" /> 

</form> 

</body> 

Onedrive link to application

+0

им просто проверить свой код, но все отлично выглядит в моем конце. – Bukhari

+0

Вы протестировали его, и он работает? Не могли бы вы опубликовать zip-файл решения, чтобы я мог сравнить его с моим решением и посмотреть, что по-другому, я тестировал это в течение часа –

+0

надеюсь, что эта помощь https://www.dropbox.com/s/a05lg4fla5v73n0/WebApplication1. zip? dl = 0 – Bukhari

ответ

1

Я, наконец, сумел разобраться в том, что я сделал.

Я думал, что это как-то связано со строкой conenction, но все же, похоже, реплицирует проблему при попытке разных строк.

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

Итак, я решил это, и затем я скопировал данные из таблицы Excel в базу данных, однако, когда я это сделал, идентификационный номер увеличился, не начиная с 1 (поскольку я уже добавил и удалил некоторые записей)

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

В любом случае, чтобы исправить эту проблему, я переместил первичный ключ в конец таблицы, создал новую таблицу с первичным ключом, начиная с 1, а затем скопировал данные обратно из excel с помощью VS, создавая новый первичный ключ, начиная от 1. Кажется, он решил проблему сейчас.

Спасибо всем, кто посмотрел на него.

0

Не форма требует runat="server" в нем постбэка к работать правильно?

Форма имеет "RUNAT = сервер" и по-прежнему не работает правильно

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server" enableviewstate="true"> 
<title></title> 
<style type="text/css"> 
    #form1 { 
     height: 249px; 
    } 
</style> 
</head> 
<body> 
<form id="form1" runat="server" enableviewstate="true"> 

    <asp:ListBox ID="Shrewsbury_listbox" runat="server" Height="153px" Width="225px" EnableViewState="true" ></asp:ListBox> 

    <br /> 
    <asp:Button ID="Button1" runat="server" Text=">>" OnClick="Button1_Click" Height="53px" Width="221px" /> 

</form> 

0

Work

Я скопировать весь код на Fleet_Tracker_Second.aspx, Fleet_Tracker_Second.aspx.cs и Fleet_Tracker_Second.aspx.designer.cs , но я изменяю строку запроса и запрос и все еще работаю.

+0

нормально, я, наконец, после 36 часов надежной попытки, сумел заставить его работать с небольшой помощью от всех, я отправлю по ответам сейчас –

+0

рад слышать. вы можете пометить свой ответ, чтобы быстрее помочь другому найденному решению. – Bukhari

 Смежные вопросы

  • Нет связанных вопросов^_^