为什么不能显示数据,我在gridview中添加DropdownList控件 代码如下

pwscusoftware 2011-07-21 11:55:25
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
DropDownList DropDownList1 = (DropDownList)GridView1.FindControl("DropDownList1");
string sql = "select Priority from [User] ";
SqlDataAdapter da = new SqlDataAdapter(sql, DBHelper.Connection);
DataSet ds = new DataSet();
da.Fill(ds);
DropDownList1.DataSource = ds;
DropDownList1.DataTextField = "Priority";
DropDownList1.DataValueField = "Priority";
DropDownList1.DataBind();
}
...全文
137 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
pwscusoftware 2011-07-22
  • 打赏
  • 举报
回复
public virtual Control FindControl(
string id
)

类型:System.String
要查找的控件的标识符。
我的DropDownList的ID就是DropdownList1
  • 打赏
  • 举报
回复
考察一个asp.net开发人员没有有正规学过asp.net,其实直接问问FindControl机制,看看他会不会正确使用FindControl方法,就能说明不少问题了。
pwscusoftware 2011-07-22
  • 打赏
  • 举报
回复
谢谢大家
yi_iy
那这个事件改写到哪个事件里面?
Editing?
  • 打赏
  • 举报
回复
看看GRidView的行的定义
public class GridViewRow : TableRow, IDataItemContainer, INamingContainer
{
当你看到它有INamingContainer,就应该知道FindControl代码该如何写。

看看那msdn: http://msdn.microsoft.com/zh-cn/library/486wc64h.aspx
要注意它写的:在当前的命名容器中搜索带指定 id 参数的服务器控件。这个命名容器,就是指 NamingContainer。

从一个控件对象上调用FindControl方法的机制,是首先找到这个对象的NamingContainer(假如说控件自己具有INamingContainer接口,那么就是自己;否则就是父控件的NaminContainer),然后从这个开始向下在整个容器中查找。但是每当遇到具有 INamingContainer 接口的控件就不再查找其内部了。

GridView具有这个接口
public class GridViewRow : TableRow, IDataItemContainer, INamingContainer
{
具有这个接口,所以你在GridView之外(不管是之上还是同级)的控件上FindControl是找不到它里边的控件的。

同样,由于每一行都有这个接口,所以你在GridView上执行FindControl也找不到每一行内的控件。而每一行中间的每个单元格并没有这个接口
public class TableCell : WebControl
{
所以你在任意一个列上执行FindControl,都可以找到它所在这个行里边其它列里的控件。
  • 打赏
  • 举报
回复
FindControl方法遇到具有 INamingContainer 接口控件就停止再向里边查找了。如果你要找,你应该直接给出它的 INamingContiner 范围。例如
Gridview1.Rows[3].FindControl("drp")。


要知道,每一行都可能有一个ID是DropDownList1的控件呢!因此页面上至少有很多个DropDownList1呢,不是一个。
  • 打赏
  • 举报
回复
DropDownList1_SelectedIndexChanged 的意思是当DropDownListt1控件的改变的时候才出发的事件。

你的这段代码不应该在这个事件里面写。

应该是在Gridview控件加载一个事件里面写。
aXen 2011-07-22
  • 打赏
  • 举报
回复
page或gridview的DataBind有没有调用 ?
没做过,建议一下。

111,098

社区成员

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

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

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