<asp:TemplateColumn HeaderText="Jan-Mar">
<ItemTemplate>
<asp:TextBox id=DataGrid1_Q1 Runat=server Width=60 BorderStyle=None Text='<%# DataBinder.Eval(Container, "DataItem.Q1") %>'>
</asp:TextBox>
</ItemTemplate>
</asp:TemplateColumn>
请问如何将以上html代码通过后台代码实现?
<ItemTemplate>
<asp:TextBox id=DataGrid1_Q1 Runat=server Width=60 BorderStyle=None Text='<%# DataBinder.Eval(Container, "DataItem.Q1") %>'>
</asp:TextBox>
</ItemTemplate>
</asp:TemplateColumn>
请问如何将以上html代码通过后台代码实现?
{
if(str == "0")
{
return "$";
}
if(str == "1")
{
return "RMB";
}
}
}
下面是一种完全通过代码添加TemplateColumn的方法:首先定义外部模板文件,是一个用户控件 : template.ascs
<%@ Control Language="c#" AutoEventWireup="false" Codebehind="template.ascx.cs" Inherits="HtmlTextBoxControlDemo.template" TargetSchema="http://schemas.microsoft.com/intellisense/ie5"%>
<asp:TextBox id=DataGrid1_Q1 Runat=server Width=60 BorderStyle=None Text='<%# DataBinder.Eval(Container, "DataItem.Q1") %>'>cs中:private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面 ITemplate it = Page.LoadTemplate( "template.ascx" ); TemplateColumn tcol = new TemplateColumn();
tcol.ItemTemplate = it ;}
class TextBoxItemTemplate : ITemplate
{
TextBox tb;
string dataField; public TextBoxItemTemplate(string dataField)
{
this.dataField = dataField;
} // Override the ITemplate.InstantiateIn method to ensure
// that the templates are created in a Literal control and
// that the Literal object's DataBinding event is associated
// with the BindData method.
public void InstantiateIn(Control container)
{
tb = new TextBox();
tb.Width=60;
tb.BorderStyle = BorderStyle.None;
tb.Style.Add("text-align", "right");
tb.DataBinding += new EventHandler(this.BindData);
container.Controls.Add(tb);
} void BindData(object o, EventArgs e)
{
tb.Text = DataBinder.Eval(tb.NamingContainer,"DataItem."+dataField).ToString();
}
}Thank you all the same!!