如何在gridview里动态添加的模板列为图片的问题。

如何在gridview里动态添加的模板列为图片的问题。,第1张

数据库中保存图片的路径(../image/1.jpg)赋值给图片模板中的图片控件。在保存图片路径的时候就将图片存放的文件夹及其图片名称都保存,这样再提取图片路径的时候就可以跟一般控件赋值一样了。

我理解的你的意思是在GridView里添加模板列,方法:

1.前台设计里,点击你添加的GridView,右上角有个三角符号,点击选择编辑列,可以将添加的BoundField转换为模板列,也可以直接插入模板列

2.在前台代码里,手动添加<asp:TemplateField >

如果你说的不是这个意思,当我说废话了

可以实现,但是我告诉你。动态生成模板列是非常难取到数据的。我试过,就是取不到数据。

这是经过我改造后的样品,自己研究下。

using System

using System.Data

using System.Configuration

using System.Linq

using System.Web

using System.Web.Security

using System.Web.UI

using System.Web.UI.HtmlControls

using System.Web.UI.WebControls

using System.Web.UI.WebControls.WebParts

using System.Xml.Linq

/// <summary>

///动态生成Template

/// </summary>

public class MyTemplate:ITemplate

{

private string strColumnName

private DataControlRowType dcrtColumnType

public MyTemplate()

{

//

//TODO: 在此处添加构造函数逻辑

//

}

/**//// <summary>

/// 动态添加模版列

/// </summary>

/// <param name="strColumnName">列名</param>

/// <param name="dcrtColumnType">列的类型</param>

public MyTemplate(string strColumnName, DataControlRowType dcrtColumnType)

{

this.strColumnName = strColumnName

this.dcrtColumnType = dcrtColumnType

}

static int count1 = 0

public void InstantiateIn(Control ctlContainer)

{

switch (dcrtColumnType)

{

case DataControlRowType.Header: //列标题

Literal ltr = new Literal()

ltr.Text = strColumnName

ctlContainer.Controls.Add(ltr)

break

case DataControlRowType.DataRow: //模版列内容——加载TextBox

TextBox tb = new TextBox()

tb.ID ="TextBox"+count1.ToString()

tb.EnableViewState = true

tb.Width =35

ctlContainer.Controls.Add(tb)

//Label lbl = new Label()

//lbl.ID = "Lable" + count1.ToString()

//ctlContainer.Controls.Add(tb)

count1++

break

}

}

/// <summary>

/// 绑定生成GridView

/// </summary>

/// <param name="gdv">要绑定的GridView</param>

/// <param name="dtblDataSource">GridView的数据源</param>

/// <param name="strDataKey">GridView的DataKeyNames</param>

public static void GridViewBind(GridView gdv, DataSet dtblDataSource)

{

//gdv.Columns.Clear()

gdv.AutoGenerateColumns = false

gdv.DataSource = dtblDataSource

int count=dtblDataSource.Tables[0].Columns.Count

//gdv.DataKeyNames = new string[]{ strDataKey }

TemplateField[] tfColumn = new TemplateField[count]

for (int i = 0i <counti++)

{

tfColumn[i] = new TemplateField()

tfColumn[i].ItemTemplate = new MyTemplate("", DataControlRowType.DataRow)

tfColumn[i].HeaderTemplate = new MyTemplate(dtblDataSource.Tables[0].Columns[i].ToString(), DataControlRowType.Header)

tfColumn[i].EditItemTemplate = new MyTemplate("", DataControlRowType.DataRow)

gdv.Columns.Add(tfColumn[i])

//if (i==count - 1)

//{

//TemplateField t = new TemplateField()

//t.ItemTemplate = new MyTemplate("", DataControlRowType.DataRow)

//t.HeaderTemplate = new MyTemplate("保存", DataControlRowType.Header)

//gdv.Columns.Add(t)

//}

}

gdv.DataBind()

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11472800.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-16
下一篇2023-05-16

发表评论

登录后才能评论

评论列表(0条)

    保存