关于GridView的问题(求高手指点)
当我点击“增加”按钮时,GridView会自动生成新的一行。这样的代码怎么写(C#)???请高手指点~~~O(∩_∩)O谢谢 --------------------编程问答-------------------- 你想新加的那一行是有数据的,还是空的?
做法就是在gridview的数据源上加一行,假设你给gridview.datasource赋的值是dt
那就是给dt加一行,dr = dt.Newrow dr(0) = ... dr(1) = ... dt.AddRow(dr)
然后把加了一行后的dt,重新赋给gridview的datasource,然后gridview.databind()
--------------------编程问答-------------------- ADDROW方法 --------------------编程问答-------------------- 方法一.用xml+webservice做一個偽gridview。
方法二.就是點增加,datatable新增一行,然後gridview再綁定這個新的datatable. --------------------编程问答-------------------- 继承模板类
ICollection CreateDataSource()
{
DataTable dt = new DataTable();
DataRow dr;
dt.Columns.Add(new DataColumn("id", typeof(Int32)));
dt.Columns.Add(new DataColumn("text", typeof(string)));
for (int i = 0; i < 6; i++)
{
dr = dt.NewRow();
dr[0] = i;
dr[1] = "列表" + i.ToString();
dt.Rows.Add(dr);
}
DataView dv = new DataView(dt);
return dv;
}
public class GridViewTemplate : ITemplate
{
private DataControlRowType dcrType;
private string columnName;
public GridViewTemplate(DataControlRowType type, string colname)
{
dcrType = type;
columnName = colname;
}
public void InstantiateIn(System.Web.UI.Control container)
{
switch (dcrType)
{
case DataControlRowType.Header:
Literal literal = new Literal();
literal.Text = columnName;
container.Controls.Add(literal);
break;
case DataControlRowType.DataRow:
DropDownList ddl = new DropDownList();
ddl.ID = "dropdownlist";
ddl.AppendDataBoundItems = true;
ddl.Items.Add(new ListItem("-----请选择------", ""));
ddl.Items.Add(new ListItem("AA", "a"));
ddl.Items.Add(new ListItem("BB", "b"));
ddl.Items.Add(new ListItem("CC", "c"));
container.Controls.Add(ddl);
break;
default:
break;
}
}
}
protected void Button1_Click(object sender, EventArgs e)
{
for (int index = 1; index < GridView1.Columns.Count; index++)
{
GridView1.Columns[index].Visible = false;
}
for (int i = 0; i < Convert.ToInt32(DropDownList1.SelectedValue); i++)
{
TemplateField tf = new TemplateField();
tf.ShowHeader = true;
tf.HeaderTemplate = new GridViewTemplate(DataControlRowType.Header, "动态添加列");
tf.ItemTemplate = new GridViewTemplate(DataControlRowType.DataRow, "");
GridView1.Columns.Add(tf);
GridView1.DataSource = CreateDataSource();
GridView1.DataBind();
}
} --------------------编程问答-------------------- DataTable dt = new DataTable();
dt.Columns.Add("id");
dt.Columns.Add("name");
DataRow dr = dt.NewRow();
dr["id"] = "";
dr["name"] = "";
dt.Rows.Add(dr);
this.GridView1.DataSource = dt;
this.GridView1.DataBind();
GridView1.EditIndex =dt.Rows.Cunt -1;
dt.Dispose();
http://topic.csdn.net/u/20090115/11/0674c008-c204-428a-a3f4-1bc726cd0fae.html --------------------编程问答-------------------- 如果你想通过新增行填写gridview值,可以通过footer模板列,前台可以这么写模板
<asp:TemplateField HeaderText="产品名称">
<FooterTemplate>
<asp:TextBox ID="ProcessPriceA" onblur="price();" runat="server"></asp:TextBox>
</FooterTemplate>
</asp:TemplateField>
后台按钮事件
protected void add_Click(object sender, EventArgs e)
{
GridView1.ShowFooter = true;
GridView1.DataSource = DT;
GridView1.DataBind();
}
把footer模板显示出来
然后在footer模板列中做个确定按钮把新增的数据填写到数据源中,重新绑定下gridview,就ok了!
当然这个过程没那么简单,需要代码,可以找我! --------------------编程问答--------------------
非常感谢,新的一行出来了,可当往新行里插入值时,却不知怎么才能保存到数据库中??? --------------------编程问答-------------------- 在新增时给绑定数据源加一空行数据。楼上已经说了。保存GRIDVIEW有个GridView1_Updating事件,在该事件写个要插入的数据即可。
给你个例子,判断是新增还是更新。注意AddRow值
protected void GridView1_Updating(object sender, GridViewUpdateEventArgs e)
{
if (AddRow == true)
{
string sSql = "insert into *** values(*****)";
Grid.ExeSql(sSql);
}
else
{
string sSql = "update *** set ****'";
Grid.ExeSql(sSql);
}
AddRow = false;
} --------------------编程问答--------------------
在点击按钮新增一行的时候--------------------编程问答-------------------- 这个代码示例里面有,你自己看看
DataSet ds = new DataSet();
ds = ....
DataTable dt = ds.Tables[0];
if (dt.Rows.Count >= 0)
{
DataRow dr = dt.NewRow();
dt.Rows.Add(dr);
}
this.GridView1.DataSource = dt;
GridView1.DataBind();
http://files.cnblogs.com/huangjianhuakarl/Gridview.rar --------------------编程问答-------------------- 在”增除删改“中的GridviewInsertRecord.aspx页面就是,通过footer模板列,完全能实现你想要效果 --------------------编程问答-------------------- UP
补充:.NET技术 , ASP.NET