using System; using System.Collections; using System.Configuration; using System.Data; using System.Linq; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Xml.Linq; using System.Data.SqlClient;public partial class Default4 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["AdventureWorksConnectionString"].ConnectionString)) { SqlDataAdapter sda = new SqlDataAdapter("select AddressID,AddressLine1 from Person.Address", conn); DataSet ds=new DataSet(); sda.Fill(ds); DropDownList1.DataSource=ds.Tables[0].DefaultView; DropDownList1.DataTextField="AddressLine1"; DropDownList1.DataValueField = "AddressID"; DropDownList1.DataBind(); } } } protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e) { Response.Write("dropdownlist 的Value:" + DropDownList1.SelectedValue + "<br/>Dropdownlist的Text:" + DropDownList1.SelectedItem.Text); } }VS2005+sql2005下面测试通过,数据库使用的是sql2005自带的AdventureWorks
{
// 在此处放置用户代码以初始化页面 string newsId=Request.QueryString["newsId"];
string sql="select news.*,newsClass.* from news,newsClass where news.classId=newsClass.classId and newsId='"+newsId+"'";
procNews.sqlexe(sql);
SqlCommand cmd=new SqlCommand(sql,procNews.cn);
SqlDataReader read=cmd.ExecuteReader();
if(read.Read()) 把if 换成while试试
{
tbNewsId.Text=newsId;
tbNewsTitle.Text=read["newsTitle"].ToString();
tbNewsFrom.Text=read["newsFrom"].ToString();
tbNewsAuthar.Text=read["newsAuthar"].ToString();
tbNewsConntent.Text=read["newsContent"].ToString();
}
ddClass.DataSource=read;
ddClass.DataTextField="className";
ddClass.DataValueField="classId";
ddClass.DataBind(); }强烈建议楼主单步调试
if(!Page.Postback)
{
string newsId=Request.QueryString["newsId"];
string sql="select news.*,newsClass.* from news,newsClass where news.classId=newsClass.classId and newsId='"+newsId+"'";
procNews.sqlexe(sql);
SqlCommand cmd=new SqlCommand(sql,procNews.cn);
SqlDataReader read=cmd.ExecuteReader();
if(read.Read())
{
tbNewsId.Text=newsId;
tbNewsTitle.Text=read["newsTitle"].ToString();
tbNewsFrom.Text=read["newsFrom"].ToString();
tbNewsAuthar.Text=read["newsAuthar"].ToString();
tbNewsConntent.Text=read["newsContent"].ToString();
}
ddClass.DataSource=read;
ddClass.DataTextField="className";
ddClass.DataValueField="classId";
ddClass.DataBind(); }
里面就Ok了
if(!Page.IsPostBack)
{ string newsId=Request.QueryString["newsId"];
string sql="select news.*,newsClass.* from news,newsClass where news.classId=newsClass.classId and newsId='"+newsId+"'";
procNews.sqlexe(sql);
SqlCommand cmd=new SqlCommand(sql,procNews.cn);
SqlDataReader read=cmd.ExecuteReader();
if(read.Read())
{
tbNewsId.Text=newsId;
tbNewsTitle.Text=read["newsTitle"].ToString();
tbNewsFrom.Text=read["newsFrom"].ToString();
tbNewsAuthar.Text=read["newsAuthar"].ToString();
tbNewsConntent.Text=read["newsContent"].ToString();
}
ddClass.DataSource=read;
ddClass.DataTextField="className";
ddClass.DataValueField="classId";
ddClass.DataBind();
}
{
string newsId=Request.QueryString["newsId"];
string sql="select news.*,newsClass.* from news,newsClass where news.classId=newsClass.classId and newsId='"+newsId+"'";
procNews.sqlexe(sql);
SqlCommand cmd=new SqlCommand(sql,procNews.cn);
SqlDataReader read=cmd.ExecuteReader();
if(read.Read())
{
tbNewsId.Text=newsId;
tbNewsTitle.Text=read["newsTitle"].ToString();
tbNewsFrom.Text=read["newsFrom"].ToString();
tbNewsAuthar.Text=read["newsAuthar"].ToString();
tbNewsConntent.Text=read["newsContent"].ToString();
}
ddClass.DataSource=read;
ddClass.DataTextField="className";
ddClass.DataValueField="classId";
ddClass.DataBind(); ddClass.Items.FindByValue(newsId.ToString()).Selected=true;
}
可以这样做:
写一个函数,返回一个datatable,然后在html中帮定到dropdownlist中,<%# 函数名%>,然后再在pageload中和其他控件一样进行绑定,如dropdownlist.select。
为什么不用连接查询
http://txhelp.net
说说我的思路首先,应该在Page_Load函数里
if(Page.IsPostBack)
{
这里给下拉列表框绑定值,绑定你的所有的新闻类别,
}
然后,其他的我就你这个喽
string newsId=Request.QueryString["newsId"];
string sql="select news.*,newsClass.* from news,newsClass where news.classId=newsClass.classId and newsId='"+newsId+"'";
procNews.sqlexe(sql);
SqlCommand cmd=new SqlCommand(sql,procNews.cn);
SqlDataReader read=cmd.ExecuteReader();
if(read.Read())
{
tbNewsId.Text=newsId;
tbNewsTitle.Text=read["newsTitle"].ToString();
tbNewsFrom.Text=read["newsFrom"].ToString();
tbNewsAuthar.Text=read["newsAuthar"].ToString();
tbNewsConntent.Text=read["newsContent"].ToString(); ddClass.SelectedValue=新闻类型那个数据字段;这样就选出来了,SqlDataReader 一次只能读一条记录,修改页面的话,适用下拉列表框里面一般都是放很多项提供选择。你这样绑定下拉列表框就被绑定成一项,如果用户要修改新闻类型就没有选择的余地了
看22楼红字地方用ddClass.SelectedValue设置这个属性
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.SqlClient;public partial class Default4 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["AdventureWorksConnectionString"].ConnectionString))
{
SqlDataAdapter sda = new SqlDataAdapter("select AddressID,AddressLine1 from Person.Address", conn);
DataSet ds=new DataSet();
sda.Fill(ds);
DropDownList1.DataSource=ds.Tables[0].DefaultView;
DropDownList1.DataTextField="AddressLine1";
DropDownList1.DataValueField = "AddressID";
DropDownList1.DataBind();
}
}
}
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
Response.Write("dropdownlist 的Value:" + DropDownList1.SelectedValue + "<br/>Dropdownlist的Text:" + DropDownList1.SelectedItem.Text);
}
}VS2005+sql2005下面测试通过,数据库使用的是sql2005自带的AdventureWorks
{
// 在此处放置用户代码以初始化页面
if(!IsPostBack)
{
string sqltxt="select className,classId from newsClass ";
procNews.sqlexe(sqltxt);
SqlCommand cmd=new SqlCommand(sql,procNews.cn);
SqlDataAdapter sqlada=new SqlDataAdapter(cmd);
DataSet ds=new DataSet();
sqlada.Fill(ds);
ddClass.DataSource=ds;
ddClass.DataTextField="className";
ddClass.DataValueField="classId";
ddClass.DataBind();
}
string newsId=Request.QueryString["newsId"];
string sql="select * from news where newsId='"+newsId+"'";
procNews.sqlexe(sql);
SqlCommand cmd=new SqlCommand(sql,procNews.cn);
SqlDataReader read=cmd.ExecuteReader();
if(read.Read())
{
tbNewsId.Text=newsId;
tbNewsTitle.Text=read["newsTitle"].ToString();
tbNewsFrom.Text=read["newsFrom"].ToString();
tbNewsAuthar.Text=read["newsAuthar"].ToString();
tbNewsConntent.Text=read["newsContent"].ToString();
ddClass.SelectedValue=read["classId "].ToString();
}
read.Close();}
这个值是read 中的新闻类别的值
{
}
把下拉列表的AUTOPOSTBACK属性设置为“TRUE”。