اتصال کنترل های DropDownListو labelو texbox به پایگاه داده در ASP.Net
با سلام در این مقاله اتصال سه کنترلDropDownList و labelو texbox به پایگاه داده در ASP.Net را توضیح خواهیم داد
با یک برنامه کوچک توضیح خواهیم داد که جزئیات مشتری بر مبنای شناسه مشتری صورت گیرد. برای این مقاله از پایگاه NorthWind SQL Server استفاده میکنیم که می تواند از اینجا دانلود شود. پایگاه داده NorthWind
رشته اتصال
<connectionStrings>
<add name="conString" connectionString="Data Source=.\SQLEXPRESS;
database=Northwind;Integrated Security=true"/>
</connectionStrings >
فضاهای نام
برای اجرای این برنامه، باید فضای نامهای زیر را وارد کنید
C #
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
VB.Net
Imports System.Data
Imports System.Data.SqlClient
Imports System.Configuration
طرح Front End
در قسمت جلویی سه کنترل کننده ASP.Net را قرار داده ایم
1. DropDownList
2. برچسب
3. TextBox
در زیر کد HTML است
<form id="form1" runat="server">
<div>
Select Customer ID
<asp:DropDownList ID="ddlCustomers" runat="server" AutoPostBack = "true"
OnSelectedIndexChanged="ddlCustomers_SelectedIndexChanged">
</asp:DropDownList>
<br />
<br />
<br />
<p>---Customer Details---</p>
<hr />
City :
<asp:TextBox ID="txtCity" runat="server"></asp:TextBox>
<br />
Country :
<asp:Label ID="lblCountry" runat="server" Text=""></asp:Label>
</div>
</form>
یک رویداد OnSelectedIndexChanged برای DropDownList اضافه کردیم و همچنین AutoPostBack = "true" را که مهمترین گام است تنظیم کردیم اگر اضافه نکنید که رویداد OnSelectedIndexChanged صورت نمی گیرد
داده اتصال DropDownList
DropDownList یک کنترل Databound است بنابراین یک منبع داده می تواند به طور مستقیم به آن اختصاص داده شود. منبع داده می تواند DataReader یا DataTable یا DataSet با استفاده از ADO.Net باشد. هنگامی که منبع داده اختصاص داده می شود، شما باید فیلد متن و فیلد DropDownList را مشخص کنید. در کد زیر، یک DropDownList لازم است. رویداد بارگذاری صفحه از صفحه وب با استفاده از SQL DataReader است.
C #
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
ddlCustomers.Items.Add(new ListItem("--Select Customer--", ""));
ddlCustomers.AppendDataBoundItems = true;
String strConnString = ConfigurationManager
.ConnectionStrings["conString"].ConnectionString;
String strQuery = "select CustomerID, ContactName from Customers";
SqlConnection con = new SqlConnection(strConnString);
SqlCommand cmd = new SqlCommand();
cmd.CommandType = CommandType.Text;
cmd.CommandText = strQuery;
cmd.Connection = con;
try
{
con.Open();
ddlCustomers.DataSource = cmd.ExecuteReader();
ddlCustomers.DataTextField = "ContactName";
ddlCustomers.DataValueField = "CustomerID";
ddlCustomers.DataBind();
}
catch (Exception ex)
{
throw ex;
}
finally
{
con.Close();
con.Dispose();
}
}
}
VB.Net
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
If Not IsPostBack Then
ddlCustomers.Items.Add(New ListItem("--Select Customer--", ""))
ddlCustomers.AppendDataBoundItems = True
Dim strConnString As String = ConfigurationManager _
.ConnectionStrings("conString").ConnectionString
Dim strQuery As String = "select CustomerID, ContactName from Customers"
Dim con As New SqlConnection(strConnString)
Dim cmd As New SqlCommand()
cmd.CommandType = CommandType.Text
cmd.CommandText = strQuery
cmd.Connection = con
Try
con.Open()
ddlCustomers.DataSource = cmd.ExecuteReader()
ddlCustomers.DataTextField = "ContactName"
ddlCustomers.DataValueField = "CustomerID"
ddlCustomers.DataBind()
Catch ex As Exception
Throw ex
Finally
con.Close()
con.Dispose()
End Try
End If
End Sub
در بالا در جدول مشتری پایگاه NorthWind و بازیابی CustomerID و ContactName از تمام مشتریان یک پرس وجو را انتخاب می کنیم و آن رابه کنترل DataTextField در ASP.Net اتصال می دهیم. DropDownList را به عنوان ContactName و DataValueField به عنوان CustomerID تنظیم می کنیم.
برچسب اتصال داده و TextBox
برچسب های ASP.Net و TextBox کنترل های databound نیستند، بنابراین ما نمی توانیم به طور مستقیم منابع داده ها را به آنها اختصاص دهیم؛ از این رو ما باید از DataReader ADO.Net استفاده کنیم. در رویداد OnSelectedIndexChanged از DropDownList دریافت جزئیات مربوط به مشتری کاربر با عبور از CustomerID به Query انتخاب شده است.به کد زیر را مراجعه کنید
C #
protected void ddlCustomers_SelectedIndexChanged(object sender, EventArgs e)
{
String strConnString = ConfigurationManager
.ConnectionStrings["conString"].ConnectionString;
String strQuery = "select City, Country from Customers where" +
" CustomerID = @CustomerID";
SqlConnection con = new SqlConnection(strConnString);
SqlCommand cmd = new SqlCommand();
cmd.Parameters.AddWithValue("@CustomerID", ddlCustomers.SelectedItem.Value);
cmd.CommandType = CommandType.Text;
cmd.CommandText = strQuery;
cmd.Connection = con;
try
{
con.Open();
SqlDataReader sdr= cmd.ExecuteReader();
while (sdr.Read())
{
txtCity.Text = sdr[0].ToString();
lblCountry.Text = sdr["Country"].ToString();
}
}
catch (Exception ex)
{
throw ex;
}
finally
{
con.Close();
con.Dispose();
}
}
VB.Net
Protected Sub ddlCustomers_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs)
Dim strConnString As String = ConfigurationManager _
.ConnectionStrings("conString").ConnectionString
Dim strQuery As String = "select City, Country from Customers where" _
& " CustomerID = @CustomerID"
Dim con As New SqlConnection(strConnString)
Dim cmd As New SqlCommand()
cmd.Parameters.AddWithValue("@CustomerID", ddlCustomers.SelectedItem.Value)
cmd.CommandType = CommandType.Text
cmd.CommandText = strQuery
cmd.Connection = con
Try
con.Open()
Dim sdr As SqlDataReader = cmd.ExecuteReader()
While sdr.Read()
txtCity.Text = sdr(0).ToString()
lblCountry.Text = sdr("Country").ToString()
End While
Catch ex As Exception
Throw ex
Finally
con.Close()
con.Dispose()
End Try
End Sub
بر این اساس TextBox و Label را با استفاده از کد زیر مرتبط میکنیم
C #
txtCity.Text = sdr[0].ToString();
lblCountry.Text = sdr["Country"].ToString();
VB.Net
txtCity.Text = sdr(0).ToString()
lblCountry.Text = sdr("Country").ToString()
دو راه وجود دارد که می توانید مقدار را از DataReader برای برچسب انجام دهیم.
یکی با استفاده از شاخص ستون برای TextBox و دیگر استفاده از نام ستون
شکل زیر برنامه نمونه را نمایش می دهد
