asp.net中用datatable给dropdownlist绑定数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了asp.net中用datatable给dropdownlist绑定数据相关的知识,希望对你有一定的参考价值。

根据当前登录用户名,在dropdownlist里显示对应的姓名,一个用户名对应多个姓名,所以要显示的是一列,就用了datatable,然后旁边有个按钮,点击之后要给goupiao表插入一行数据

前台:
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
乘车人:<asp:DropDownList ID="DropDownList1" runat="server" Width="298px"> </asp:DropDownList>
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="预定" />
</asp:Content>

后台:
protected void Page_Load(object sender, EventArgs e, string cmdText)

if (!IsPostBack)

string sqlConStr = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
SqlConnection conn = new SqlConnection(sqlConStr); ;
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText = cmdText;

string UserName = Session["UserName"].ToString();
DataTable dr = new DataTable("select Name from ChengCheRen where UserName " + UserName);
SqlDataAdapter sda = new SqlDataAdapter();
sda.SelectCommand = cmd;

sda.Fill(dr);
DropDownList1.DataSource=dr;
DropDownList1.DataTextField = "Name";
DropDownList1.DataValueField = "UserId";
DropDownList1.DataBind();


protected void Button1_Click(object sender, EventArgs e)

string Orderid;
if (Session["UserName"] == null)

Alert.AlertAndRedirect("您还没有登录,请登录后再购买,谢谢合作!", "Default.aspx");

else
sqlconn.Open();
string strid = Page.Request.QueryString["CheCiID"];

string sql1 = "select * from CheCi where CheCiID=" + Request.QueryString["CheCiID"].ToString();

SqlDataReader drhb = data.GetDataReader(sql1);
if (drhb.Read())


string sqlstr = "insert into GouPiao"
+ "(OrderID,OrderMember,CheCiID,CheCiName,CheCiPrice,IsCheckout,shuliang,ZuoWei,ChengCheRen)"
+ " values('" + Orderid + "','" + Session["UserName"].ToString() + "','" + Request.QueryString["CheCiID"].ToString() + "','"
+ drhb["CheCiName"].ToString() + "','" + drhb["CheCiPrice"].ToString() + "','否','1','" + Request.QueryString["BianHao"].ToString()+ "')";
data.RunSql(sqlstr);

data.RunSql("update ZuoWei set ShouChu='是' where id='" + Request.QueryString["id"].ToString() + "'");
Response.Redirect("Shopping.aspx");




我现在能运行....但是dropdownlist没有取到值,然后上面内个inset into的语句该改成啥样,才能把取到的值插入到goupiao表的ChengCheRen中

参考技术A public void LoadDropDownList()

try

//获取list
List<model> list = new List<model>();
list = ...;
//创建DataTable
DataTable dt = new DataTable();
dt.Columns.Add("ID");
dt.Columns.Add("Name");
foreach (var model in list)

DataRow dr = dt.NewRow();
dr["ID"] = model.ID;
dr["Name"] = model.Name;
dt.Rows.Add(dr);

//绑定数据
DropDownList.DataSource = dt;//指定数据追问

内个list=......是啥 原来都不用查询的么....

ASP.NET Datatable 名为“xx"的列已经属于此DataTable的解决方法?

在Page_Load外面,我声明了一个静态的DataTable
public static DataTable dt= new DataTable();
然后在Page_Load的if (!IsPostBack)里面,给这个自定义的DataTable设定了表结构,添加一些列,页面首次载入的时候没问题
但是第二次载入就会报异常:
名为“xxxxx”的列已属于此 DataTable。

这个如果不用ViewState的话,要怎么解决?

DataTable不要声明成static,第二次加载的时候把DataTable清空!因为你首次已经创建了列,再次创建的时候就会报错!追问

谢谢,我按2L的方法加了个判断。
因为不想应ViewState,还得弄成全局的。

参考技术A public static DataTable dt= new DataTable();
不要写成静态的,写一个方法,专门创建表结构,然后返回DataTable 只在Page_Load外声明DataTable然后将创建出的表结构在if (!IsPostBack)赋值给声明的表结构就可以了,如果想长期保存表结构最好使用GetSet,在Set里面处理表结构,这样最好。追问

谢谢,我按2L的方法加了个判断。
因为不想应ViewState,还得弄成全局的。

参考技术B Page_Load的if (!IsPostBack)里面检测dt的列数是不是已经是你设置的了,如果是就不要重复设置了本回答被提问者采纳

以上是关于asp.net中用datatable给dropdownlist绑定数据的主要内容,如果未能解决你的问题,请参考以下文章

asp.net 如何在网页中用while循环出datatable的数据?

ASP.NET操作DataTable各种方法总结(给Datatable添加行列DataTable选择排序等)

vs2010 asp.net 中,怎么将一个DataTable中的某行数据 复制给另一个DataTable中。

asp.net mvc中Controller如何返回DataTable给页面

C# ASP.net MVC Ajax MySQL DATATABLES 列搜索无法将搜索值传递给控制器

asp.net如何对DataTable 或DataView进行统计,比如像用SQL函数里的Sum统计类似。