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

C#如何后台代码动态生成模板列,这个模板列按下编辑按钮之后label变成textbox,但是用代码怎么写呢
本帖最后由 cuiqian0926 于 2013-01-23 15:14:03 编辑
我想实现下面这段的效果,但是使用后台代码动态添加模板列
<asp:TemplateColumn HeaderText="月份">
<ItemStyle wrap="false" HorizontalAlign="left"></ItemStyle>
<ItemTemplate>
<asp:Label runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "yue") %>' style="width:90" ID="Label31" name="Label3"/>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox runat="server" id="edit_yue" onfocus="jlyz()" onblur="pdsz()" style="Font-Size:10pt;width:90;height:22;cursor:hand" Text='<%# DataBinder.Eval(Container.DataItem, "yue") %>'/>
</EditItemTemplate>
</asp:TemplateColumn>

我自己写了一遍,代码如下:
TemplateColumn tem = new TemplateColumn();
            tem.ItemStyle.Wrap = false;
            Label label = new Label();
            label.ID="label"+i;
            label.Text=ds.Tables[0].Columns[i].ToString();
            tem.ItemTemplate = (ITemplate)label;
            TextBox tb = new TextBox();
            tb.ID = "tb" + i;
            tem.EditItemTemplate = (ITemplate)tb;
            this.DataGrid.Columns.Add(tem);


可是报错了:无法将类型为“System.Web.UI.WebControls.Label”的对象强制转换为类型“System.Web.UI.ITemplate”。
c# 模板列 label

------解决方案--------------------
同时有TextBox和Label,然后根据状态转换可见性
------解决方案--------------------
为什么非要同时用label和textbox,一个textbox就解决了,代码控制textbox的readonly就行了