Cześć wszystkim
Na liście DropDownList tworzę dodatkową pustą pozycję dzięki DropDownList4.Items.Add(new ListItem("", "")). Po wybraniu innej pozycji z DropDownList (i pobraniu selecta z access) poszczególne rekordy z bazy danych są wczytywane do TextBoxów. Jednak gdy wybiorę ponownie z DropDownList pustą pozycję aplikacja stara się ją znaleźć w bazie danych. Czy można pominąć próbę pobrania pustego rekordu (którego nie ma fizycznie w bazie danych) przy DropDownList1_SelectedIndexChanged, gdyż jego istnienie wynika tylko z DropDownList4.Items.Add(new ListItem("", ""))?
if (!Page.IsPostBack)
{
DropDownList4.Items.Add(new ListItem("", ""));
DropDownList4.AppendDataBoundItems = true;
String strConnString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\Projekty\projekty.accdb";
String strQuery = "select * from projects";
OleDbConnection con = new OleDbConnection(strConnString); ;
cmd.CommandType = CommandType.Text;
cmd.CommandText = strQuery;
cmd.Connection = con;
try
{
con.Open();
DropDownList4.DataSource = cmd.ExecuteReader();
DropDownList4.DataTextField = "Nazwa_projektu";
DropDownList4.DataValueField = "Identyfikator";
DropDownList4.DataBind();
}
catch (Exception ex)
{
throw ex;
}
finally
{
con.Close();
con.Dispose();
}
protected void DropDownList4_SelectedIndexChanged(object sender, EventArgs e)
{
String strConnString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\Projekty\projekty.accdb";
string strQuery = "select * from projects where" + " Identyfikator = @Identyfikator";
OleDbConnection con = new OleDbConnection(strConnString);
OleDbCommand cmd = new OleDbCommand();
cmd.Parameters.AddWithValue("@Identyfikator", DropDownList4.SelectedItem.Value);
cmd.CommandType = CommandType.Text;
cmd.CommandText = strQuery;
cmd.Connection = con;
OleDbDataReader myreader;
try
{
con.Open();
myreader = cmd.ExecuteReader();
myreader.Read();
TextBox12.Text = myreader["Nazwa_projektu"].ToString();
TextBox2.Text = myreader["Wlasciciel"].ToString();
myreader.Close();
}
finally
{
con.Close();
}
}