使用 Ui 层和数据层最佳实践 asp.net C# 填充下拉列表和复选框列表
Populating dropdownlist and checkboxlist using Ui layer and Data Layer best practice asp.net C#
I am getting the result i want with the below code.
but my question is am i doing it right?
please post some modification if my code needs to be modified
i am new in c# and trying to learn how to pass data from Ui layer to Data layer
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:DropDownList ID="ddList" runat="server"></asp:DropDownList>
<asp:CheckBoxList ID="cbList" runat="server"></asp:CheckBoxList>
</div>
</form>
</body>
</html>
using System.Data.SqlClient;
using System.Data;
namespace test2
{
public class Data
{
string connection = "Data Source=Test\SQLEXPRESS; Initial Catalog = RegistrationDB;Integrated Security=SSPI";
SqlConnection conn = new SqlConnection();
public Data()
{
conn.ConnectionString = connection;
}
public SqlConnection getConnection()
{
return conn;
}
public DataTable LoadCountry()
{
DataTable dtable = new DataTable();
string select = "SELECT ID,country FROM dbo.Country";
using (SqlConnection conn = new SqlConnection(connection))
{
SqlDataAdapter adapter = new SqlDataAdapter(select, conn);
adapter.Fill(dtable);
return dtable;
}
}
public DataTable LoadChkboxList()
{
DataTable position = new DataTable();
using (SqlConnection conn = new SqlConnection(connection))
{
string select = "SELECT ID,chkPosition FROM dbo.checkPosition";
SqlDataAdapter adapter = new SqlDataAdapter(select, conn);
adapter.Fill(position);
return position;
}
}
}
}
using System;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
namespace test2
{
public partial class UI : System.Web.UI.Page
{
Data datalayer = new Data();
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
ddList.DataSource = datalayer.LoadCountry();
ddList.DataTextField = "country";
ddList.DataValueField = "ID";
ddList.DataBind();
cbList.DataSource = datalayer.LoadChkboxList();
cbList.DataTextField = "chkPosition";
cbList.DataValueField = "ID";
cbList.DataBind();
}
}
}
}
一点修改
public DataTable getData(string query)
{
DataTable dtable = new DataTable();
using (SqlConnection con = new SqlConnection(YourConnectionString)){
using (SqlCommand cmd = new SqlCommand(query,con){
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
return adapter.Fill(dt);
}
}
}
注意:您可以将上述函数放在一个class中,然后在您需要的地方调用。也可以修改为接受参数。为避免 SQL 注入,避免内联查询,使用存储过程(最好)。
DataTable dt Country = getData(YourQuery);
I am getting the result i want with the below code. but my question is am i doing it right? please post some modification if my code needs to be modified i am new in c# and trying to learn how to pass data from Ui layer to Data layer
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:DropDownList ID="ddList" runat="server"></asp:DropDownList>
<asp:CheckBoxList ID="cbList" runat="server"></asp:CheckBoxList>
</div>
</form>
</body>
</html>
using System.Data.SqlClient;
using System.Data;
namespace test2
{
public class Data
{
string connection = "Data Source=Test\SQLEXPRESS; Initial Catalog = RegistrationDB;Integrated Security=SSPI";
SqlConnection conn = new SqlConnection();
public Data()
{
conn.ConnectionString = connection;
}
public SqlConnection getConnection()
{
return conn;
}
public DataTable LoadCountry()
{
DataTable dtable = new DataTable();
string select = "SELECT ID,country FROM dbo.Country";
using (SqlConnection conn = new SqlConnection(connection))
{
SqlDataAdapter adapter = new SqlDataAdapter(select, conn);
adapter.Fill(dtable);
return dtable;
}
}
public DataTable LoadChkboxList()
{
DataTable position = new DataTable();
using (SqlConnection conn = new SqlConnection(connection))
{
string select = "SELECT ID,chkPosition FROM dbo.checkPosition";
SqlDataAdapter adapter = new SqlDataAdapter(select, conn);
adapter.Fill(position);
return position;
}
}
}
}
using System;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
namespace test2
{
public partial class UI : System.Web.UI.Page
{
Data datalayer = new Data();
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
ddList.DataSource = datalayer.LoadCountry();
ddList.DataTextField = "country";
ddList.DataValueField = "ID";
ddList.DataBind();
cbList.DataSource = datalayer.LoadChkboxList();
cbList.DataTextField = "chkPosition";
cbList.DataValueField = "ID";
cbList.DataBind();
}
}
}
}
一点修改
public DataTable getData(string query)
{
DataTable dtable = new DataTable();
using (SqlConnection con = new SqlConnection(YourConnectionString)){
using (SqlCommand cmd = new SqlCommand(query,con){
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
return adapter.Fill(dt);
}
}
}
注意:您可以将上述函数放在一个class中,然后在您需要的地方调用。也可以修改为接受参数。为避免 SQL 注入,避免内联查询,使用存储过程(最好)。
DataTable dt Country = getData(YourQuery);