{
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();
}
8 个解决方案
#1
page或gridview的DataBind有没有调用 ?
没做过,建议一下。
没做过,建议一下。
#2
DropDownList1_SelectedIndexChanged 的意思是当DropDownListt1控件的改变的时候才出发的事件。
你的这段代码不应该在这个事件里面写。
应该是在Gridview控件加载一个事件里面写。
你的这段代码不应该在这个事件里面写。
应该是在Gridview控件加载一个事件里面写。
#3
FindControl方法遇到具有 INamingContainer 接口控件就停止再向里边查找了。如果你要找,你应该直接给出它的 INamingContiner 范围。例如
要知道,每一行都可能有一个ID是DropDownList1的控件呢!因此页面上至少有很多个DropDownList1呢,不是一个。
Gridview1.Rows[3].FindControl("drp")。
要知道,每一行都可能有一个ID是DropDownList1的控件呢!因此页面上至少有很多个DropDownList1呢,不是一个。
#4
看看GRidView的行的定义
看看那msdn: http://msdn.microsoft.com/zh-cn/library/486wc64h.aspx
要注意它写的:在 当前的命名容器中搜索带指定 id 参数的服务器控件。这个命名容器,就是指 NamingContainer。
从一个控件对象上调用FindControl方法的机制,是首先找到这个对象的NamingContainer(假如说控件自己具有INamingContainer接口,那么就是自己;否则就是父控件的NaminContainer),然后从这个开始向下在整个容器中查找。但是每当遇到具有 INamingContainer 接口的控件就不再查找其内部了。
GridView具有这个接口
同样,由于每一行都有这个接口,所以你在GridView上执行FindControl也找不到每一行内的控件。而每一行中间的每个单元格并没有这个接口
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,都可以找到它所在这个行里边其它列里的控件。
{
#5
谢谢大家
yi_iy
那这个事件改写到哪个事件里面?
Editing?
yi_iy
那这个事件改写到哪个事件里面?
Editing?
#6
考察一个asp.net开发人员没有有正规学过asp.net,其实直接问问FindControl机制,看看他会不会正确使用FindControl方法,就能说明不少问题了。
#7
public virtual Control FindControl(
string id
)
类型:System.String
要查找的控件的标识符。
我的DropDownList的ID就是DropdownList1
string id
)
类型:System.String
要查找的控件的标识符。
我的DropDownList的ID就是DropdownList1
#8
#1
page或gridview的DataBind有没有调用 ?
没做过,建议一下。
没做过,建议一下。
#2
DropDownList1_SelectedIndexChanged 的意思是当DropDownListt1控件的改变的时候才出发的事件。
你的这段代码不应该在这个事件里面写。
应该是在Gridview控件加载一个事件里面写。
你的这段代码不应该在这个事件里面写。
应该是在Gridview控件加载一个事件里面写。
#3
FindControl方法遇到具有 INamingContainer 接口控件就停止再向里边查找了。如果你要找,你应该直接给出它的 INamingContiner 范围。例如
要知道,每一行都可能有一个ID是DropDownList1的控件呢!因此页面上至少有很多个DropDownList1呢,不是一个。
Gridview1.Rows[3].FindControl("drp")。
要知道,每一行都可能有一个ID是DropDownList1的控件呢!因此页面上至少有很多个DropDownList1呢,不是一个。
#4
看看GRidView的行的定义
看看那msdn: http://msdn.microsoft.com/zh-cn/library/486wc64h.aspx
要注意它写的:在 当前的命名容器中搜索带指定 id 参数的服务器控件。这个命名容器,就是指 NamingContainer。
从一个控件对象上调用FindControl方法的机制,是首先找到这个对象的NamingContainer(假如说控件自己具有INamingContainer接口,那么就是自己;否则就是父控件的NaminContainer),然后从这个开始向下在整个容器中查找。但是每当遇到具有 INamingContainer 接口的控件就不再查找其内部了。
GridView具有这个接口
同样,由于每一行都有这个接口,所以你在GridView上执行FindControl也找不到每一行内的控件。而每一行中间的每个单元格并没有这个接口
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,都可以找到它所在这个行里边其它列里的控件。
{
#5
谢谢大家
yi_iy
那这个事件改写到哪个事件里面?
Editing?
yi_iy
那这个事件改写到哪个事件里面?
Editing?
#6
考察一个asp.net开发人员没有有正规学过asp.net,其实直接问问FindControl机制,看看他会不会正确使用FindControl方法,就能说明不少问题了。
#7
public virtual Control FindControl(
string id
)
类型:System.String
要查找的控件的标识符。
我的DropDownList的ID就是DropdownList1
string id
)
类型:System.String
要查找的控件的标识符。
我的DropDownList的ID就是DropdownList1