新手请教如何将更新下拉选项的代码写成公共类?

Dreamia 2019-02-28 02:33:40
我的页面需要从SQL数据库中获取下拉选项的内容,比如获取公司名称:

SqlConnection con = new SqlConnection(System.Web.Configuration.WebConfigurationManager.ConnectionStrings["AMDConnectionString"].ToString());
con.Open();
String SQL;
SqlCommand cmd;
SqlDataReader rd;
//公司选项
if (CompanyCode.Items.Count == 0)
{
CompanyCode.Items.Clear();
SQL = "SELECT OrgCode + ' - ' + SaleOrg AS AA, OrgCode FROM SORG ORDER BY OrgCode";
cmd = new SqlCommand(SQL, con);
rd = cmd.ExecuteReader();
while (rd.Read())
{
ListItem Item = new ListItem();
Item.Text = rd["AA"].ToString();
Item.Value = rd["OrgCode"].ToString();
CompanyCode.Items.Add(Item);
}
rd.Close();
}
con.Close();

而我的页面中经常会有这类需求,就是从数据库某个表中select列表,更新到下拉选项。所以我希望将它做成一个公共的类,在各个页面都可以调用,只需输入sql代码以及目标下拉选项控件名称,就可以用。但是研究了半天不知该如何实现?请教!
...全文
264 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Dreamia 2019-03-01
  • 打赏
  • 举报
回复
引用 5 楼 正怒月神 的回复:
你去找一个dbhelper或者sqlhelper。
然后这个类只管获取数据,返回List或者datatable。
然后变量接收完,直接绑定到dropdownlist.datasource

谢谢!
我研究了一下搞定了,原来类里面也可以用void呀。

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

/// <summary>
/// CommonClass 的摘要说明
/// 用于页面基本功能函数
/// </summary>
public class CommonClass
{
public CommonClass()
{
//
// TODO: 在此处添加构造函数逻辑
//

}
public void ListSQL(String S, DropDownList D)
{
SqlConnection con = new SqlConnection(System.Web.Configuration.WebConfigurationManager.ConnectionStrings["AMDConnectionString"].ToString());
con.Open();
String SQL;
SqlCommand cmd;
SqlDataReader rd;
D.Items.Clear();
SQL = S;
cmd = new SqlCommand(SQL, con);
rd = cmd.ExecuteReader();
while (rd.Read())
{
ListItem Item = new ListItem();
Item.Text = rd[0].ToString();
if (rd.FieldCount >= 2) {
Item.Value = rd[1].ToString();
} else
{
Item.Value = rd[0].ToString();
}

D.Items.Add(Item);
}
rd.Close();
con.Close();
}
}


页面中调用:

public partial class assetedit : System.Web.UI.Page
{
CommonClass CC = new CommonClass();
protected void Page_Load(object sender, EventArgs e)
{
CC.ListSQL("SELECT DISTINCT Code + ' - ' + Factory AS FactoryName, Code FROM FCTR WHERE Entity='" + Entity + "' ORDER BY Code", Factory);
}
正怒月神 版主 2019-03-01
  • 打赏
  • 举报
回复
你去找一个dbhelper或者sqlhelper。 然后这个类只管获取数据,返回List或者datatable。 然后变量接收完,直接绑定到dropdownlist.datasource
Dreamia 2019-03-01
  • 打赏
  • 举报
回复
引用 3 楼 娃都会打酱油了 的回复:
但你这种前后端大一统的写法,在实际开发项目时是不存在的

谢谢答复,那么如果我这种情况,<asp:DropDownList>从SQL后台获取列表 这个功能要写成类或者方法,应该如何写?是否有参考代码呢?我是个新手,我只知道可以在公共类里面写int或者string的函数,但是不知道如何才能把这个功能写在类里面。
谢谢!
  • 打赏
  • 举报
回复
但你这种前后端大一统的写法,在实际开发项目时是不存在的
  • 打赏
  • 举报
回复
你就将sql作为参数提取出来就行了,Text和Value部分可作为可选参数
FainSheeg 2019-02-28
  • 打赏
  • 举报
回复
做成扩展方法

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧