TemplateColumn aa = new TemplateColumn();
aDatagrid.Columns.AddAt(2, aa);
我知道这样可以添加模板列,现在的问题是如何将我需要的控件放入模板列的ItemTemplate和EditItemTemplate??
恳请高手解决。
aDatagrid.Columns.AddAt(2, aa);
我知道这样可以添加模板列,现在的问题是如何将我需要的控件放入模板列的ItemTemplate和EditItemTemplate??
恳请高手解决。
解决方案 »
- 中秋过后第一贴,关于水晶报表的?谁能帮我看看啊
- js取RadioButton的值
- 有谁的企业级开发在用富客户端?Flex?SilverLight?什么应用在用它?
- 帮帮忙!急急急!关于vs2005的问题。
- [关于邮件]这个问题baidu上面只有一个答案,莫非很少碰到
- 安了文件夹的取消按钮还是没有用
- 如何读取DataSet和DataTable中的某一列值!!!
- 小弟刚接触ASP.NET,遇到文件调用的问题,请求解决!
- 在DataGrid里面点击编辑按钮出现的编辑文本框太长!!如何解决?
- 从ListBox1选择数据添加到ListBox2去的问题。
- iframe获取父窗体的地址/iframe连接页面获取iframe父窗体地址,还是没解决啊。
- xmlhttp.Open("POST",zsURL,false)會用POST請進.....
这个模版列包含一个Textbox
Private Class TxtColumn
Implements ITemplate Public Sub InstantiateIn(ByVal container As System.Web.UI.Control) Implements System.Web.UI.ITemplate.InstantiateIn
Dim txt As New TextBox
txt.Text = "test"
container.Controls.Add(txt)
End Sub
End Class然后这样添加到Datagrid,ItemTemplate,EditTemplate都类似:
Dim col As New TemplateColumn
col.ItemTemplate = New TxtColumn
col.HeaderText = "header" Me.DataGrid1.Columns.Add(col) Me.DataGrid1.DataSource = ds
Me.DataGrid1.DataBind()
需要说明的是,ASP.NET对于动态创建的控件,不负责维护其状态,也就是说动态创建Textbox,客户端用户输入值,点击一个按钮,页面回传,此时,如果不写代码来获取这个值并加以保存,则下次传回客户端时,这个值将不会被自动保存了,而通过工具箱放到页面上的控件都能自动保存输入。这个是要特别注意的!!!特别是你这种模版列里有控件的情况,取值比较麻烦,呵呵。
{
BoundColumn dc = new BoundColumn();
dc.HeaderText = strHeaderText;
dc.HeaderStyle.Wrap = bWrap;
dc.HeaderStyle.Width = Unit.Parse(iHeaderWidth.ToString() + "%");
dc.HeaderStyle.HorizontalAlign = HorizontalAlign.Center;
dc.HeaderStyle.VerticalAlign = VerticalAlign.Middle;
dc.ItemStyle.HorizontalAlign = HorizontalAlign.Center;
dc.ItemStyle.VerticalAlign = VerticalAlign.Middle;
dc.DataField = strDataField;
dc.Visible = bVisible;
dc.ItemStyle.HorizontalAlign = HorizontalAlign.Center;
objGrid.Columns.AddAt(iColumnIndex,dc);
} /// <summary>
/// 加入模板列
/// add by zw
/// </summary>
/// <param name="objGrid"></param>
private void AddTemplateColumnToGrid(DataGrid objGrid,int iColumnIndex,
string headtype,string headid,string headinfo,
string itemtype,string itemid,string iteminfo)
{
TemplateColumn tc = new TemplateColumn();
tc.HeaderTemplate = new DataGridTemplates.CTemplateColumn(headtype,headid,true,headinfo);
tc.ItemTemplate = new DataGridTemplates.CTemplateColumn(itemtype,itemid,false,iteminfo);
tc.HeaderStyle.Width = Unit.Parse("10%");
tc.HeaderStyle.HorizontalAlign = HorizontalAlign.Center;
tc.HeaderStyle.VerticalAlign = VerticalAlign.Middle;
tc.ItemStyle.HorizontalAlign = HorizontalAlign.Center;
tc.ItemStyle.VerticalAlign = VerticalAlign.Middle;
objGrid.Columns.AddAt(iColumnIndex,tc); }
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;namespace DataGridTemplates
{ public class CTemplateColumn:ITemplate
{ private string ControlType;
private string ControlID;
private bool IsHeadColumn;
private string HeadText; System.Web.UI.Control control; public CTemplateColumn(string type, string id, bool headColumn, string headText)
{ ControlType=type;
ControlID = id;
IsHeadColumn = headColumn;
HeadText = headText; } //为了使用接口必须实现的方法
public void InstantiateIn(Control container)
{ switch(ControlType)
{
case "checkbox":
CheckBox chk = new CheckBox();
if(IsHeadColumn)
chk.Text = HeadText;
control = chk;
break;
case "linkbutton":
LinkButton linkbtn = new LinkButton();
linkbtn.Text = HeadText;
control = linkbtn;
break;
case "button":
Button btn = new Button();
if(IsHeadColumn)
btn.Text = HeadText;
control = btn;
break;
case "litercontrol":
LiteralControl literalcontrol = new LiteralControl();
if(IsHeadColumn)
literalcontrol.Text = HeadText;
control = literalcontrol;
break;
case "dropdownlist":
DropDownList downlist = new DropDownList();
control = downlist;
break;
case "label":
Label lbl = new Label();
lbl.Text = HeadText;
control = lbl;
break;
default:
Label defaultcontrol = new Label();
defaultcontrol.Text = HeadText;
control = defaultcontrol;
break; }
control.DataBinding += new EventHandler(this.OnDataBinding); control.ID = ControlID;
container.Controls.Add(control); } public void OnDataBinding(object sender, EventArgs e)
{ //DataGridItem container = (DataGridItem) l.NamingContainer;
//((DataRowView)container.DataItem)[colname].ToString(); } }}
http://218.84.107.5/g.aspx