Virendra S from Bangalore, Karnataka Ответов: 2

Можем ли мы связать данные для нескольких выпадающих списков в C#?


У меня есть 3 dropdownlist в веб-форме, поэтому я хочу привязать данные из базы данных SQL, я могу сделать это для одного dropdownlist.. как связать данные для других двух выпадающих списков из той же базы данных sqldatabase...

мой код:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;

namespace Expense_System
{
    public partial class Transactions : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

            String strConnString = ConfigurationManager.ConnectionStrings["conString"].ConnectionString;

            SqlConnection con = new SqlConnection(strConnString);

            con.Open();

            SqlCommand cmd = new SqlCommand("select * from Expense_Type",con);

            DropDownListexpensetype.DataSource = cmd.ExecuteReader();
            DropDownListexpensetype.DataTextField = "Expense_Type";
            DropDownListexpensetype.DataValueField = "Expense_Type";
            DropDownListexpensetype.DataBind();


          

        }

        protected void BtncreateExpense_Click(object sender, EventArgs e)
        {
            String strConnString = ConfigurationManager.ConnectionStrings["conString"].ConnectionString;

            SqlConnection con = new SqlConnection(strConnString);

            con.Open();

            SqlCommand cmd = new SqlCommand();

            cmd.CommandType = CommandType.StoredProcedure;

            cmd.CommandText = "[dbo].[Spcreatetransactions]";

            cmd.Parameters.Add("@Payee", SqlDbType.VarChar).Value = tbpayee.Text;
            cmd.Parameters.Add("@Date", SqlDbType.Date).Value = tbdate.Text;
            cmd.Parameters.Add("@AMOUNT", SqlDbType.Int).Value = tbamount.Text;
            cmd.Parameters.Add("@expensetype", SqlDbType.VarChar).Value = DropDownListexpensetype.Text;
            cmd.Parameters.Add("@person ", SqlDbType.Int).Value = DropDownListperson.Text;
            cmd.Parameters.Add("@card ", SqlDbType.Int).Value = DropDownListcard.Text;

            cmd.Connection = con;

            int totalrecords = (int)cmd.ExecuteNonQuery();
            Response.Write("The number of created transactions is" + totalrecords.ToString());


            con.Close();

        }

    }
}


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

я пробовал так же, но не работал, он бросал ошибку unhandledexception.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;

namespace Expense_System
{
    public partial class Transactions : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

            String strConnString = ConfigurationManager.ConnectionStrings["conString"].ConnectionString;

            SqlConnection con = new SqlConnection(strConnString);

            con.Open();

            SqlCommand cmd = new SqlCommand("select * from Expense_Type",con);

            DropDownListexpensetype.DataSource = cmd.ExecuteReader();
            DropDownListexpensetype.DataTextField = "Expense_Type";
            DropDownListexpensetype.DataValueField = "Expense_Type";
            DropDownListexpensetype.DataBind();


            SqlCommand cmd2 = new SqlCommand("select * from [dbo].[User_details]", con);

            DropDownListperson.DataSource = cmd2.ExecuteReader();
            DropDownListperson.DataTextField = "Full_Name";
            DropDownListperson.DataValueField = "Full_Name";
            DropDownListperson.DataBind();

        }

        protected void BtncreateExpense_Click(object sender, EventArgs e)
        {
            String strConnString = ConfigurationManager.ConnectionStrings["conString"].ConnectionString;

            SqlConnection con = new SqlConnection(strConnString);

            con.Open();

            SqlCommand cmd = new SqlCommand();

            cmd.CommandType = CommandType.StoredProcedure;

            cmd.CommandText = "[dbo].[Spcreatetransactions]";

            cmd.Parameters.Add("@Payee", SqlDbType.VarChar).Value = tbpayee.Text;
            cmd.Parameters.Add("@Date", SqlDbType.Date).Value = tbdate.Text;
            cmd.Parameters.Add("@AMOUNT", SqlDbType.Int).Value = tbamount.Text;
            cmd.Parameters.Add("@expensetype", SqlDbType.VarChar).Value = DropDownListexpensetype.Text;
            cmd.Parameters.Add("@person ", SqlDbType.Int).Value = DropDownListperson.Text;
            cmd.Parameters.Add("@card ", SqlDbType.Int).Value = DropDownListcard.Text;

            cmd.Connection = con;

            int totalrecords = (int)cmd.ExecuteNonQuery();
            Response.Write("The number of created transactions is" + totalrecords.ToString());


            con.Close();

        }

    }
}

Simon_Whale

что такое сообщение об исключении?

2 Ответов

Рейтинг:
15

Vincent Maverick Durano

Вы должны сказать нам, какая строка вызывает ошибку.

В любом случае, попробуйте это вместо этого:

protected void Page_Load(object sender, EventArgs e){
       if(!IsPostback){
	      BindAll();
       }  
	}
	
	private void BindAll(){
		BindExpenseList();
		BindPersonList();
	}
	
	private string GetConnectionString(){
		return ConfigurationManager.ConnectionStrings["conString"].ConnectionString;
	}


	private void BindExpenseList(){
            using(SqlConnection con = new SqlConnection(GetConnectionString())){
            	using(SqlCommand cmd = new SqlCommand("select * from Expense_Type", con)){
			        con.Open();
            		DropDownListexpensetype.DataSource = cmd.ExecuteReader();
            		DropDownListexpensetype.DataTextField = "Expense_Type";
            		DropDownListexpensetype.DataValueField = "Expense_Type";
            		DropDownListexpensetype.DataBind();
	    	}
	    }
    }
	
	private void BindPersonList(){
            using(SqlConnection con = new SqlConnection(GetConnectionString())){
            	using(SqlCommand cmd = new SqlCommand("select * from [dbo].[User_details]", con)){
			        con.Open();
            		DropDownListperson.DataSource = cmd.ExecuteReader();
                    DropDownListperson.DataTextField = "Full_Name";
                    DropDownListperson.DataValueField = "Full_Name";
                    DropDownListperson.DataBind();
	    	}
	    }
    }


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


Рейтинг:
0

abdul shakib

https://www.c-sharpcorner.com/UploadFile/d1558d/working-with-multiple-dropdownlist-using-Asp-Net/