Girdview 的最精华问题(在线等)
小弟 最近碰到一个非常棘手的问题,先说明一下问题的情况!!我在gridview 中用了一个模版列,里面放了一个Dropdownlist,用来获取一张表的ID 字段.目的是当下拉控件选择一个值只后,就和选中的那个值的一条记录调换一下位置.
但是现在,我在程序中Dropdownlist也无法调出,找不到有Dropdownlist这个控件.也不知道程序这么写.小弟刚接触.net ,请各位大虾多多关照!!!
--------------------编程问答-------------------- 救命呀!!! --------------------编程问答-------------------- 你是怎么放的?
--------------------编程问答-------------------- 这种问题一般是用FindControl找到控件,楼主最好贴贴你的页面代码,再描述清楚你的需求 --------------------编程问答-------------------- 找不到有Dropdownlist这个控件
---------------
你说的是在哪里找不到 --------------------编程问答-------------------- 点击编辑模版,然后就拖了个Dropdownlist控件 放在了ItemTemplate,就这样但是在程序中找不到这个控件 郁闷 --------------------编程问答-------------------- 程序代码?
--------------------编程问答-------------------- 定义DropDownList记得写 runat=server --------------------编程问答-------------------- 我直接想问你一下,怎样把一张表的ID 字段放在摸板列中的Dropdownlist控件中 --------------------编程问答-------------------- 是服务器控件,但是没用,我直接想问你一下,摸板列中的Dropdownlist控件中怎样获取一张表的ID字段 --------------------编程问答-------------------- 救命呀!!! --------------------编程问答-------------------- 可以使用FindControl来找到你选择模板列中的DropDownList控件。 --------------------编程问答-------------------- 我不是想获得DropDownlist的值 我是想将从数据库读到的值绑定到DropDownlist中!!! --------------------编程问答-------------------- 救命!! --------------------编程问答-------------------- 貼code --------------------编程问答-------------------- FindControl来找到你选择模板列中的DropDownList控件(ddl),然后数据库读到的值绑定到ddl.
--------------------编程问答-------------------- int id = Convert.ToInt32(((Label)lstData.Rows[e.RowIndex].Cells[0].FindControl("lblID")).Text.Trim()); --------------------编程问答-------------------- 在RowCommand事件里写
GridViewRow GVR = (GridViewRow)((Control)e.CommandSource).Parent.Parent;
Dropdownlist dl= GVR.FindControl("控件的ID") as Dropdownlist;
这样就能找到你所点击的Dropdownlist 了
然后就可以操作了 --------------------编程问答-------------------- 我的代码是这样的 但是不行!!
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
DataSet dstal = new DataSet();
dstal = MySqlOperate.FunViewCourse();//获得DATASET
if (((DropDownList)e.Row.FindControl("ddl1")) == null)
{
DropDownList ddl1= (DropDownList)e.Row.FindControl("ddl1");
ddl1.DataSource = dstal.Tables[0];
ddl1.DataTextField = "C_id";
ddl1.DataValueField = "C_id";
ddl1.DataBind();
}
} --------------------编程问答-------------------- 救命呀!!到底怎么帮定 ,我放了代码相信大家都知道我的意思!!! --------------------编程问答-------------------- 精华贴,UP~~ --------------------编程问答-------------------- 建议楼主在RowCreated事件里动态添加DropDownList --------------------编程问答-------------------- 设置DropDownList autopostback属性为true
GridView ItemCommand 事件
--------------------编程问答-------------------- 楼主,N人 --------------------编程问答-------------------- if (((DropDownList)e.Row.FindControl("ddl1")) == null) //如果为空,
{
DropDownList ddl1= (DropDownList)e.Row.FindControl("ddl1");//找不到了就要。找到了不要。
.....
--------------------编程问答-------------------- protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
DataSet dstal = new DataSet();
dstal = MySqlOperate.FunViewCourse();//获得DATASET
if (((DropDownList)e.Row.FindControl("ddl1")) == null)
// if (((DropDownList)e.Row.FindControl("ddl1")) != null) 不等于空的话 下面就不执行了,数据都没帮定,当然是空的,下面的就不执行了,所以用了==null 其实我觉的不用也没什么关系的!
{
DropDownList ddl1= (DropDownList)e.Row.FindControl("ddl1");
ddl1.DataSource = dstal.Tables[0];
ddl1.DataTextField = "C_id";
ddl1.DataValueField = "C_id";
ddl1.DataBind();
}
}
--------------------编程问答-------------------- 救命呀!!有人有这方面的原代码吗??????????/ --------------------编程问答-------------------- 难道非得高分才有人回 --------------------编程问答-------------------- 你跟踪断点吧,我这么写是好的 --------------------编程问答-------------------- 我想问下,为什么给别人看代码这么郁闷啊 --------------------编程问答-------------------- 如果Dropdownlist的改变了 怎么去获取 改变的值 和 改变前的值!! --------------------编程问答-------------------- protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
DataSet dstal = new DataSet();
dstal = MySqlOperate.FunViewCourse();
//加下面这句
if (e.Row.RowType == DataControlRowType.DataRow)
{
//下面这个判断应该是不等于才对
if (((DropDownList)e.Row.FindControl("ddl1")) !=null)
{
DropDownList ddl1= (DropDownList)e.Row.FindControl("ddl1");
ddl1.DataSource = dstal.Tables[0];
ddl1.DataTextField = "C_id";
ddl1.DataValueField = "C_id";
ddl1.DataBind();
}
}
}
--------------------编程问答-------------------- 楼上的是正确的
if (e.Row.RowType == DataControlRowType.DataRow)//这句话的意思是判断行是为数据行的时候才执行下面的代码,因为有标题行和尾行
if (((DropDownList)e.Row.FindControl("ddl1")) !=null)
//要求不等于的,等于的话dropdownlist是空的就根本没有找到dropdownlist这个对象,它怎么可能绑定到值??
PS:楼主的名字取得太吓人了~~~ --------------------编程问答-------------------- amandag(高歌) ( ) 信誉:98 2007-7-20 15:59:52 得分: 0
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
DataSet dstal = new DataSet();
dstal = MySqlOperate.FunViewCourse();
//加下面这句
if (e.Row.RowType == DataControlRowType.DataRow)
{
//下面这个判断应该是不等于才对
if (((DropDownList)e.Row.FindControl("ddl1")) !=null)
{
DropDownList ddl1= (DropDownList)e.Row.FindControl("ddl1");
ddl1.DataSource = dstal.Tables[0];
ddl1.DataTextField = "C_id";
ddl1.DataValueField = "C_id";
ddl1.DataBind();
}
}
}
----------
同意! --------------------编程问答-------------------- mark --------------------编程问答-------------------- 同意 --------------------编程问答-------------------- Girdview 的最精华问题 !!!
LZ 你的人品有问题! --------------------编程问答-------------------- 我考这个也叫精华问题啊,稍微用过的都知道用findcontrol查找,lz人品不得。 --------------------编程问答-------------------- 学习! --------------------编程问答-------------------- if (((DropDownList)e.Row.FindControl("ddl1")) == null)
》》》
都是空引用了,还执行下面的代码有虾米意思?
if (((DropDownList)e.Row.FindControl("ddl1")) != null) --------------------编程问答-------------------- 这种问题似乎很多啊.容易弄的,自己学习下吧 --------------------编程问答-------------------- 学习dd --------------------编程问答-------------------- http://hi.baidu.com/sure_huang/blog/item/a32983c810164c127e3e6f1d.html --------------------编程问答-------------------- 点模版中的DropDownList1控件,右边出来智能菜单,选配制数据源,将数据库里的数据绑定到DropDownList1上。就可以了。但运行中,选中一项后更新事件的代码需要重写。 --------------------编程问答-------------------- 在模板列里直接用DataSource控件不就好了吗?
每次都去数据库取再重新绑定不觉得繁琐吗 --------------------编程问答-------------------- //DropDownList 绑定
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
DataSet dstal = new DataSet();
dstal = MySqlOperate.FunViewCourse();
if (e.Row.RowType == DataControlRowType.DataRow)
{
DropDownList ddl1= (DropDownList)e.Row.FindControl( "ddl1 ");
ddl1.DataSource = dstal.Tables[0];
ddl1.DataTextField = "C_id ";
ddl1.DataValueField = "C_id ";
ddl1.DataBind();
}
}
//触发你的DropDownList空间事件
<asp:TemplateField>
<ItemTemplate>
<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True"
onselectedindexchanged="DropDownList1_SelectedIndexChanged">
</asp:DropDownList>
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
GridViewRow gv = (GridViewRow)(((DropDownList)sender).NamingContainer);
string key = GridView1.DataKeys[gv.RowIndex].Value.ToString();
...........//执行相应操作
} --------------------编程问答-------------------- 唉。。。。来晚了。。。。
补充:.NET技术 , ASP.NET