一个空的GridView还没有进行绑定,已知这个GridView有7列,我如何在这个GridView中添加新行?新行显示为TextBox?
解决方案 »
- 【求救,大侠们】MVC2中 如何将dropdownlist选中的值传送到action中
- 【弱弱的问下】:上传控件FileUpload的问题~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- asp.net页面A.aspx传数据到B.aspx显示?
- 想做一个网站
- 动态创建表,修改表字段的问题,请高手教教
- 十六进制转换问题
- 调用共用函数问题:怎么实现类似<!--#include file="xxx.inc" -->的功能
- 在web上用asp.net做考勤系统一般要实现什么功能?
- 如何用c#程序创建新的web页面
- web菜单的用法?
- Flash不显示啊 !!!!!!~!!
- activex 与 服务器端交互问题
看看这篇文章
TextBox txt = new TextBox();
GridViewRow row = new GridViewRow();
row.ColSpan = 7;
row.Controls.Add(txt);
GridView.Rows.Add(row);
GridViewRow row = new GridViewRow();
row.ColSpan = 7; ????????
row.Controls.Add(txt);
GridView.Rows.Add(row);
private void CoulmnTextBox(int coulmnNum)
{
this.gvMainList.Columns.Clear();
BoundField bf0 = new BoundField();
bf0.DataField = "ID";
bf0.Visible = true;
gvMainList.Columns.Add(bf0); TemplateField tf1 = new TemplateField();
tf1.HeaderTemplate = new MyGridViewTemplate("省份", DataControlRowType.Header,"","");
tf1.ItemTemplate = new MyGridViewTemplate("", DataControlRowType.DataRow, "txtShiptoProvince", "ShiptoProvince");
gvMainList.Columns.Add(tf1); TemplateField tf2 = new TemplateField();
tf2.HeaderTemplate = new MyGridViewTemplate("城市", DataControlRowType.Header, "", "");
tf2.ItemTemplate = new MyGridViewTemplate("", DataControlRowType.DataRow, "txtShiptoCity", "ShiptoCity");
gvMainList.Columns.Add(tf2);
TemplateField tf3 = new TemplateField();
tf3.HeaderTemplate = new MyGridViewTemplate("公里", DataControlRowType.Header, "", "");
tf3.ItemTemplate = new MyGridViewTemplate("", DataControlRowType.DataRow, "txtDistance", "Distance");
gvMainList.Columns.Add(tf3); TemplateField tf4 = new TemplateField();
tf4.HeaderTemplate = new MyGridViewTemplate("零担运输天数", DataControlRowType.Header, "", "");
tf4.ItemTemplate = new MyGridViewTemplate("", DataControlRowType.DataRow, "txtLTLDays", "LTLDays");
gvMainList.Columns.Add(tf4); TemplateField tf5 = new TemplateField();
tf5.HeaderTemplate = new MyGridViewTemplate("整车运输天数", DataControlRowType.Header, "", "");
tf5.ItemTemplate = new MyGridViewTemplate("", DataControlRowType.DataRow, "txtFTLDays", "FTLDays");
gvMainList.Columns.Add(tf5); for (int i = 1; i <= coulmnNum; i++)
{
TemplateField tf = new TemplateField();
tf.HeaderTemplate = new MyGridViewTemplate("价格" + i.ToString(), DataControlRowType.Header, "", "");
tf.ItemTemplate = new MyGridViewTemplate("", DataControlRowType.DataRow, "txtTL" + i.ToString(), "TL" + i.ToString());
gvMainList.Columns.Add(tf);
}
}
///////////////
public class MyGridViewTemplate : ITemplate
{
private string strColumnName;
private string textID;
private DataControlRowType dcrtColumnType;
private string strColumnText; /// <summary>
/// 动态添加模板列
/// </summary>
/// <param name="strColumnName">列名 </param>
/// <param name="dcrtColumnType">列的类型 </param>
public MyGridViewTemplate(string strColumnName, DataControlRowType dcrtColumnType, string textID, string strColumnText)
{
this.strColumnName = strColumnName;
this.dcrtColumnType = dcrtColumnType;
this.textID = textID;
this.strColumnText = strColumnText;
} 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
MyTextBox tb = new MyTextBox();
tb.ID = textID;
tb.BorderWidth = 1;
tb.Enabled = true;
tb.DataBinding += new EventHandler(this.tb_DataBinding);
ctlContainer.Controls.Add(tb);
break;
}
}
void tb_DataBinding(object sender, EventArgs e)
{
MyTextBox hi = (MyTextBox)sender;
GridViewRow container = (GridViewRow)hi.NamingContainer;
//关键位置
//使用DataBinder.Eval绑定数据
//ProName,MyTemplate的属性.在创建MyTemplate实例时,为此属性赋值(数据源字段)
//hi.Attributes.Add("onclick", "alert('" + DataBinder.Eval(container.DataItem, strColumnText).ToString() + "');");
// hi.Text = DataBinder.Eval(container.DataItem, strColumnText).ToString();
hi.Text = ((DataRowView)container.DataItem)[strColumnText].ToString();
}
}
{
DataTable dt = new DataTable(); dt.Columns.Add("accountname");
dt.Columns.Add("name");
DataRow dr = dt.NewRow();
dr["accountname"] = "111111111";
dr["name"] = "111111name";
dt.Rows.Add(dr); dr = dt.NewRow();
dr["accountname"] = "22222";
dr["name"] = "22222name";
dt.Rows.Add(dr); this.GridView1.DataSource = dt;
this.GridView1.DataBind();
dt.Dispose();
}
http://hi.baidu.com/dongtso/blog/item/16812f1f91d75fc0a7866990.html