请教DropDownList问题

happyno7 2003-01-27 07:40:01
//将合乎条件的Name和RecID值添加到DropDownList中
SqlConnection conn = new SqlConnection();
conn.ConnectionString = link.ConnectionString;
conn.Open();
string sql="";
sql="SELECT ProductCategories.Name, ProductCategories.RecID ";
sql=sql + "FROM ProductCategories LEFT OUTER JOIN ";
sql=sql + "Products ON ProductCategories.RecID =products.Category ";
sql=sql + "WHERE (Products.Category IS NULL)";

SqlDataAdapter adp = new SqlDataAdapter(sql,conn);
DataSet ds = new DataSet();
adp.Fill(ds);
//add ("none","0") into subcategorydrop

object[] rowVals = new object[2];
rowVals[0] = "None";
rowVals[1] = "0";
ds.Tables[0].Rows.Add (rowVals);

SubcategoryDrop.DataSource = ds;
SubcategoryDrop.DataBind();
SubcategoryDrop.SelectedIndex =SubcategoryDrop.Items.Count-1;

conn.Close() ;
//添加成功

//问题是:
//问题是:
string MyIsChildOF = SubcategoryDrop.SelectedItem.Value;
要取到这个Name对应的RecID值
无论选择哪一个items;
总是取到值为0;
如果将
//SubcategoryDrop.SelectedIndex =SubcategoryDrop.Items.Count-1;
屏蔽掉,
取到的值总是为1;

//object[] rowVals = new object[2];
//rowVals[0] = "None";
//rowVals[1] = "0";
//ds.Tables[0].Rows.Add (rowVals);
屏蔽掉也没用。

为何
为何



...全文
19 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
ar7_top 2003-01-28
  • 打赏
  • 举报
回复
楼上说的很有道理

其实这种初始化 DropDownList 的代码应该单独写成一个函数比较好

需要初始化的时候调用这个函数

这样程序的结构似乎能够更加清晰
visualpony 2003-01-28
  • 打赏
  • 举报
回复
ar7_top(黑白呸,男生女生呸) 说的应该可以,
问题解决了吗?解决了就结贴。

不过说句题外话,你把
SqlConnection conn = new SqlConnection();
conn.ConnectionString = link.ConnectionString;
conn.Open();
string sql="";
sql="SELECT ProductCategories.Name, ProductCategories.RecID ";
sql=sql + "FROM ProductCategories LEFT OUTER JOIN ";
sql=sql + "Products ON ProductCategories.RecID =products.Category ";
sql=sql + "WHERE (Products.Category IS NULL)";

SqlDataAdapter adp = new SqlDataAdapter(sql,conn);
DataSet ds = new DataSet();
adp.Fill(ds);

这些代码放在web页面钟,那你的分层就有问题。很不合理
happyno7 2003-01-28
  • 打赏
  • 举报
回复
没错,就是这个原因,已经解决了
我是写成了一个函数的。
谢谢
把函数包含在if(!IsPostBack)里面就解决了。

ar7_top 2003-01-27
  • 打赏
  • 举报
回复
否则你每次提交的时候,触发的是 Button_Click 事件

这个事件是一定在 Page_Load 之后发生的,

如果你不按照我上面说的那样做,你修改的数据又会被重新初始化了。

所以你修改的数据,比方说选择第三个选择,在使用的时候又重新变成了0了
ar7_top 2003-01-27
  • 打赏
  • 举报
回复
对不起,我先入为主的认为你是用在 ASP.NET 里面了

所以才这样说了,如果不是在 ASP.NET 里面就算我放屁好了,嘻嘻

如果是 ASP.NET 我估计你把你的代码直接放在 Page_Load 下面了

如果我没有估计错误,那么我建议你把所有初始化页面的代码都放在

if (!Page.IsPostBack)
{

}

里面,这样才能保证你选择的数据或者修改的数据可以使用
ar7_top 2003-01-27
  • 打赏
  • 举报
回复
if (!Page.isPostback)
{
SubcategoryDrop.DataSource = ds;
SubcategoryDrop.DataBind();
SubcategoryDrop.SelectedIndex =SubcategoryDrop.Items.Count-1;
}

这样才能够保证你不是每次访问叶面都初始化 Dropdownlist

tangjun 2003-01-27
  • 打赏
  • 举报
回复

SubcategoryDrop.SelectedIndex =SubcategoryDrop.Items.Count-1;

SubcategoryDrop.Items[SubcategoryDrop.Items.Count-1].Selected=true;

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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