在GridView的EditItemTemplate中对控件进行数据绑定

2006年06月13日  |  5:18 下午分类:Develop  |  

gridview内置的编辑功能大大缩短了开发的周期,同时,利用它自带的这些功能大大节省了时间
以前在做开发时,利用gridview的编辑能时,在EditTemplate中添加一些诸如DropDownlist控件等,不知道如何给这些DropDownList绑定一些数据,
在.cs中用FindControls()怎么也找不到这些控件.只得作罢,今日又遇上此类问题,看来是躲不了了,只能解决它了.
因为GridView有一个RowCreated事件,无论是在生成行还是在编辑行时,都会触发该事件,所以,从它下手了,

protected void _gv_main_RowCreated(object sender, GridViewRowEventArgs e)
{
//这里注意Row的RowState属性的枚举
if ((e.Row.RowState & DataControlRowState.Edit) == DataControlRowState.Edit)
{
DropDownList dd = (DropDownList)e.Row.FindControl("_dd_colorList");
string[] colorArray = Enum.GetNames(typeof(System.Drawing.KnownColor));
foreach (string color in colorArray)
{
ListItem item = new ListItem(color, color);
item.Attributes.Add("style", "background-color:" + color); dd.Items.Add(item);
}
}
}

这样就可以进行绑定了正在为此沾沾自喜时却发现,点击gridview的更新时,无法获取dropdownlist选中的值看来, 并未结束.
于是,在sqldatasource控件的Updating事件中来解决(因为gridview是绑定在一个sqldatasource上的)

protected void _gv_source_Updating(object sender, SqlDataSourceCommandEventArgs e) {
//找到当前编辑的行,并找到dropdownlist控件
DropDownList dd = (DropDownList)_gv_main.Rows[_gv_main.EditIndex].FindControl("_dd_colorList");
e.Command.Parameters["@color"].Value = dd.SelectedValue; //设定值
}

至此,问题得以解决。

转载时务必以超链接形式标明文章原始出处和作者信息。

相关文章

  • 暂无相关日志

3 位领导已批示 关于 “在GridView的EditItemTemplate中对控件进行数据绑定”

  1. 帅青蛙 发表于: 二月 29th, 2008 12:20 下午

    刚刚碰到这个问题,根据你的思路,终于绑定上下拉列表了。谢谢哈。:d
    但是现在还有一个问题,就是没有办法根据原先的值自动选择项,这个怎么解决?:p

  2. 幻想曲 发表于: 二月 29th, 2008 4:29 下午

    @帅青蛙:
    DropDownList有一个SelectedValue属性,可以利用这个^_^

  3. 幻想曲 发表于: 二月 29th, 2008 4:29 下午

    http://www.lemongtree.com/Archives/451.aspx


发表您的评论

1410168172122013183195114157619