日期:2014-05-17  浏览次数:20434 次

【求助】怎么动态添加GridView的一行啊。。
而且动态添加的每一行里要有下拉列表,要实现联动效果,求各位大牛给思路啊

------解决方案--------------------
给DataTable添加一行,然后绑定到gridview,做一个模板列,以后添加的列都会有这个模板列
------解决方案--------------------
你的gridview 应该是绑定的 dataset 或者 datatable 吧。。处理这个东东就好了
假设前面有写好的DataTable dt。。。
DataRow dr = dt.NewRow();......
dt.Rows.Add(dr);
然后再重新绑定DataBind()。。只要重新绑定就会运行下面的事件
再在行绑定事件里去添加你要的控件。。
protected void GridViewRData_RowDataBound(object sender, GridViewRowEventArgs e)
{
e.Row.Controls.AddAt(位置,控件);
}
思路大致是这样。。。
------解决方案--------------------
也可以将下拉列表框绑定到GridView的一列上。
------解决方案--------------------
如果还要触发事件 ,那就
protected void GridViewRData_RowDataBound(object sender, GridViewRowEventArgs e)
{
  
e.Row.Controls.AddAt(位置,控件);
//给控件注册事件...
}

------解决方案--------------------
如果之前是你gridview已经绑有这个下拉框的列了那就无需再去添加了
------解决方案--------------------
晕 那你总的给定数据才能让gridview展现出来啊..
DataTable dt 这个东东你可以先创建一个空的啊..然后
你也可以构造三个列啊..
DataRow dr = dt.NewRow();//这是构造一个空行..
//这里可以给数据也可以不给........
dt.Rows.Add(dr);
//下面这个可以自己去添加不同的控件啊...
protected void GridViewRData_RowDataBound(object sender, GridViewRowEventArgs e)
{
Controle control1;
Controle control2;
Controle control3;
e.Row.Controls.AddAt(位置,control1);....................
//给控件注册事件...
}

------解决方案--------------------
C# code
View Code 

 #region DynamicShow_gdvUpgradeQuery动态增加维度列
        private void DynamicShow_gdvDownload(List<DocAttributeEntity> attributeList)
        {
            //动态加入列之前先将之前加入的列清除,防止重复列出现
            for (int i = 0; i < gdvDownload.Columns.Count; i++)
            {
                if (i > 2 && i < gdvDownload.Columns.Count -5)
                {
                    gdvDownload.Columns[i].Visible = false;
                }
            }
            //gdvDownload 动态增加列
            foreach (DocAttributeEntity attribute in attributeList)
            {
                BoundField field = new BoundField();
                field.DataField = attribute.AttName;
                field.HeaderText = attribute.AttName;
                field.ItemStyle.CssClass = "gdv_pdmItemLeft";
                field.HeaderStyle.CssClass = "gdv_pdmItemLeft";
                //field.SortExpression = attribute.AttName;
                
                //留最后2个按钮列
                gdvDownload.Columns.Insert(gdvDownload.Columns.Count - 5, field);
            }
                    }
        #endregion

------解决方案--------------------
像你这种情况.可以在gridview里弄三个DropDownList的模板列 分别命好名 ddl1,ddl2,ddl3
然后..这三个控件可以指定改变事件
而这三个ddl 可以在
protected void GridViewRData_RowDataBound(object sender, GridViewRowEventArgs e)
{
DropDownList ddl1 = e.Row.FindControl("ddl1") as DropDownList;
DropDownList ddl2 = e.Row.FindControl("ddl2") as DropDownList;
DropDownList ddl3 = e.Row.FindControl("ddl3") as DropDownList;
//给三个下拉框绑定数据.至于怎么绑就看你怎么写了
}
//下面是三个下拉框的改变事件..
------解决方案--------------------
大致的思路是这样的:
在添加一行前,首先把gridview中的数据取出放到datatable中,然后再给datatable添加行,添加结束后再把数据绑定到gridview中即可。至于还要添加下拉菜单,提前定义好下拉菜单,然后在给datatable添加行的时候直接添加即可。
------解决方案--------------------
例子

HTML code
<%@ Page Language="C#" Debug="true" AutoEventWireup="true" EnableEventValidation="true" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&