首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

请问,怎样给动态生成的模板列绑定数据,多谢!

2012-03-22 
请教,怎样给动态生成的模板列绑定数据,谢谢!!!!!我的程序如下://根据数据表项目的记录动太生成GridView的

请教,怎样给动态生成的模板列绑定数据,谢谢!!!!!
我的程序如下:
//根据数据表项目的记录动太生成GridView的列
        private   void   CreateGridviewColumns()
        {
                gvUnderGraduateList.Columns.Clear();
                        foreach   (DataRow   dr   in   dsProject.Tables[0].Rows)
                        {
                                TemplateField   tf   =   new   TemplateField();
                                tf.ShowHeader   =   true;
                                tf.HeaderText   =   dr[2].ToString();
                                tf.ItemStyle.HorizontalAlign   =   HorizontalAlign.Right;
                                tf.ItemTemplate   =   new   GridViewTemplate(DataControlRowType.DataRow,   dr[2].ToString(),   (800   /   dsProject.Tables[0].Rows.Count));
                                gvUnderGraduateList.Columns.Add(tf);
                        }
                gvUnderGraduateList.DataBind();
        }

//模板类
public   class   GridViewTemplate   :   ITemplate
        {
                private   DataControlRowType   templateType;
                private   string   columnName;
                private   int   tbWidth;

                public   GridViewTemplate(DataControlRowType   type,   string   colname,int   pWidth)
                {
                        templateType   =   type;
                        columnName   =   colname;
                        tbWidth   =   pWidth;
                }

                public   void   InstantiateIn(System.Web.UI.Control   container)
                {
                        switch   (templateType)
                        {
                                case   DataControlRowType.Header:
                                        Literal   lc   =   new   Literal();


                                        lc.ID   =   columnName;
                                        container.Controls.Add(lc);
                                        break;
                                case   DataControlRowType.DataRow:
                                        TextBox   tb   =   new   TextBox();
                                        tb.ID   =   columnName.ToString();
                                        tb.AutoPostBack   =   false;
                                        tb.Width   =   tbWidth;
                                        tb.BorderStyle   =   BorderStyle.Groove;
                                        tb.DataBinding   +=   new   EventHandler(this.tbxCols_DataBinding);
                                        container.Controls.Add(tb);
                                        break;
                                default:
                                        break;
                        }
                }
//数据绑定,参照坛子上一个贴子写了一下,这里我不知道该怎么写了,不知怎样得到绑定字段的名称(因为字段是动态传进来的)
//或者有没有别的方法来进行数据绑定,谢谢!!!!!
private   void   tbxCols_DataBinding(Object   sender,   EventArgs   e)
                {
                        TextBox   tbx   =   (TextBox)sender;
                        //取得GridViewRow(包含TextBox控件)
                        //GridViewRow   gvRow   =   (GridViewRow)gvUnderGraduateList.NamingContainer;
                        //进行数据绑定
                        //tbx.Text   =   DataBinder.Eval(gvRow.DataItem,   " ").ToString();
                }

请各位大侠赐教,谢谢!!!!!!!!


[解决办法]
既然是动态生的,怎么生的列就怎么赋值呗.

你生成的时候是foreach循环, 绑定的时候就在RowDataBound的时候再foreach一下吧.模板列只能这样来了.对你的技术实现方案合理性表示怀疑.


动态生成的也可以FindControl()得到引用,然后赋值.


其实你在生成列的时候就应该知道它对应的是什么字段,在那个时候就设置好不就行了(就是不用TemplateField的意思,这里不需要用模板列呀 )?



[解决办法]
http://dotnet.aspx.cc/article/b131bf6e-b35b-413c-9dce-e755242fa795/read.aspx
[解决办法]
GridView可以设置AutoGenerate属性为true,就自动根据数据(例如DataSet)来生成列,根本不用你管。

热点排行