还有,最后datatable绑定给gridview显示在界面给用户看,当我绑定给gridview后,我如何选中这个gridview中的某行呢?
这是按钮的代码:
protected void Button3_Click(object sender, EventArgs e)
{
string GoodsId = TextBox1.Text;
string Name = TextBox2.Text;
string Locality = TextBox3.Text;
string Unit = TextBox4.Text;
string Guige = TextBox5.Text;
string Price = TextBox6.Text;
string Num = TextBox7.Text;
string Count = TextBox8.Text;
ModelAddGoods ag = new ModelAddGoods(GoodsId, Name, Locality, Unit, Guige, Price, Num, Count,i);
GridView1.DataSource = new AddGoodsDAO().saveGoods(ag);
GridView1.DataBind();
}
然后这个是DAL层的代码:
public DataTable saveGoods(ModelAddGoods ag)
{
int i = Convert.ToInt32(ag.ii);
DataTable dt = new DataTable("AddGoods");
DataColumn dc = null;
dc = dt.Columns.Add("ID", Type.GetType("System.Int32"));
dc.AutoIncrement = true;//自动增加
dc.AutoIncrementSeed = 1;//起始为1
dc.AutoIncrementStep = 1;//步长为1
dc.AllowDBNull = false;//
dc = dt.Columns.Add("GoodsId", Type.GetType("System.Int32"));
dc = dt.Columns.Add("Name", Type.GetType("System.String"));
dc = dt.Columns.Add("Locality", Type.GetType("System.String"));
dc = dt.Columns.Add("Unit", Type.GetType("System.String"));
dc = dt.Columns.Add("Guige", Type.GetType("System.String"));
dc = dt.Columns.Add("Price", Type.GetType("System.Int32"));
dc = dt.Columns.Add("Num", Type.GetType("System.Int32"));
dc = dt.Columns.Add("Count", Type.GetType("System.Int32"));
DataRow newRow;
newRow = dt.NewRow();
newRow["GoodsId"] = ag.GGoodsId;
newRow["Name"] = ag.NName;
newRow["Locality"] = ag.LLocality;
newRow["Unit"] = ag.UUnit;
newRow["Guige"] = ag.GGuige;
newRow["Price"] = ag.PPrice;
newRow["Num"] = ag.NNum;
newRow["Count"] = ag.CCount;
return dt;
}
17 个解决方案
#1
DataTable dt = new DataTable("AddGoods");
放在外面就可以了
saveGoods方法每次给dt添加一行
放在外面就可以了
saveGoods方法每次给dt添加一行
#2
你这样的DataTable每次只能存一次提交的值
#3
你每次调用DAL的方法DataTable dt = new DataTable("AddGoods");都会重新实例化一次,每次只把当前的值放到gridview上,不会累加。
可以用viewstate保存当前的gridview的值,每次向viewstate中添加数据,然后绑定到girdview上面去。
我如何选中这个gridview中的某行呢?楼主可以添加一个
<Columns>
<asp:CommandField HeaderText="选择" ShowSelectButton="True" />
</Columns>
然后在SelectedIndexChanged事件中写你的操作。。。
可以用viewstate保存当前的gridview的值,每次向viewstate中添加数据,然后绑定到girdview上面去。
我如何选中这个gridview中的某行呢?楼主可以添加一个
<Columns>
<asp:CommandField HeaderText="选择" ShowSelectButton="True" />
</Columns>
然后在SelectedIndexChanged事件中写你的操作。。。
#4
saveGoods方法就是每次执行都添加一行了吧?对datatable不太熟悉。。。
#5
这个viewstate怎么用呢?不知道如何用啊。。。可以举个例子不?
#6
public string Text
{
get { return (string)ViewState["Text"]; }
set { ViewState["Text"] = value; }
}
#7
我现在把代码改成如下还是添加不了多行数据啊。。。麻烦帮我看看那里错了。。。
public partial class AddGoods : System.Web.UI.Page
{
int i = 0;
DataTable dt = new DataTable("AddGoods");
protected void Page_Load(object sender, EventArgs e)
{
DataColumn dc = null;
dc = dt.Columns.Add("ID", Type.GetType("System.Int32"));
dc.AutoIncrement = true;//自动增加
dc.AutoIncrementSeed = 1;//起始为1
dc.AutoIncrementStep = 1;//步长为1
dc.AllowDBNull = false;//
dc = dt.Columns.Add("GoodsId", Type.GetType("System.Int32"));
dc = dt.Columns.Add("Name", Type.GetType("System.String"));
dc = dt.Columns.Add("Locality", Type.GetType("System.String"));
dc = dt.Columns.Add("Unit", Type.GetType("System.String"));
dc = dt.Columns.Add("Guige", Type.GetType("System.String"));
dc = dt.Columns.Add("Price", Type.GetType("System.Int32"));
dc = dt.Columns.Add("Num", Type.GetType("System.Int32"));
dc = dt.Columns.Add("Count", Type.GetType("System.Int32"));
}
protected void Button3_Click(object sender, EventArgs e)
{
string GoodsId = TextBox1.Text;
string Name = TextBox2.Text;
string Locality = TextBox3.Text;
string Unit = TextBox4.Text;
string Guige = TextBox5.Text;
string Price = TextBox6.Text;
string Num = TextBox7.Text;
string Count = TextBox8.Text;
DataRow newRow;
newRow = dt.NewRow();
newRow["GoodsId"] = ag.GoodsId;
newRow["Name"] = ag.Name;
newRow["Locality"] = ag.Locality;
newRow["Unit"] = ag.Unit;
newRow["Guige"] = ag.Guige;
newRow["Price"] = ag.Price;
newRow["Num"] = ag.Num;
newRow["Count"] = ag.Count;
dt.Rows.Add(newRow);
ViewState["dt"] = dt;
GridView1.DataSource = (DataTable)ViewState["dt"];
GridView1.DataBind();
}
public partial class AddGoods : System.Web.UI.Page
{
int i = 0;
DataTable dt = new DataTable("AddGoods");
protected void Page_Load(object sender, EventArgs e)
{
DataColumn dc = null;
dc = dt.Columns.Add("ID", Type.GetType("System.Int32"));
dc.AutoIncrement = true;//自动增加
dc.AutoIncrementSeed = 1;//起始为1
dc.AutoIncrementStep = 1;//步长为1
dc.AllowDBNull = false;//
dc = dt.Columns.Add("GoodsId", Type.GetType("System.Int32"));
dc = dt.Columns.Add("Name", Type.GetType("System.String"));
dc = dt.Columns.Add("Locality", Type.GetType("System.String"));
dc = dt.Columns.Add("Unit", Type.GetType("System.String"));
dc = dt.Columns.Add("Guige", Type.GetType("System.String"));
dc = dt.Columns.Add("Price", Type.GetType("System.Int32"));
dc = dt.Columns.Add("Num", Type.GetType("System.Int32"));
dc = dt.Columns.Add("Count", Type.GetType("System.Int32"));
}
protected void Button3_Click(object sender, EventArgs e)
{
string GoodsId = TextBox1.Text;
string Name = TextBox2.Text;
string Locality = TextBox3.Text;
string Unit = TextBox4.Text;
string Guige = TextBox5.Text;
string Price = TextBox6.Text;
string Num = TextBox7.Text;
string Count = TextBox8.Text;
DataRow newRow;
newRow = dt.NewRow();
newRow["GoodsId"] = ag.GoodsId;
newRow["Name"] = ag.Name;
newRow["Locality"] = ag.Locality;
newRow["Unit"] = ag.Unit;
newRow["Guige"] = ag.Guige;
newRow["Price"] = ag.Price;
newRow["Num"] = ag.Num;
newRow["Count"] = ag.Count;
dt.Rows.Add(newRow);
ViewState["dt"] = dt;
GridView1.DataSource = (DataTable)ViewState["dt"];
GridView1.DataBind();
}
#8
1、写个得到数据的方法
public DataTable getDataTable()
{
//这里主要是循环gridview中的数据
将gridview中的数据添加到datatable中
Datatable dt=;//写个公共方法创建datatable
dt.Rows.Clear();
for (int i = 0; i < GridView1.Rows.Count; i++)
{
}
}
2、再添加一行的按钮点击事件里调用这个方法
protected void Button2_Click(object sender, EventArgs e)
{
DataTable dt = getDataTable();
//添加一空行
DataRow dr = dt.NewRow();
//给每一列赋值
dr[“”]=””;
dr[“”]=””;
dr[“”]=””;
//绑定数据
dt.Rows.Add(dr);
GridView1.DataSource = dt;
GridView1.DataBind();
}
#9
每次都给viewstate附新值,肯定是一条啊,你给了viewstate但是每次应该循环得到原来的值,然后再添加吧?我是这样任务地,看看我给写的方法,改改
#10
那我要怎样才能循环存入viewstate呢?
#11
干什么总得要viewstate呢?我的那个实现的效果和你的是一样的,要用viewstate也行,声明一个viewstate用于存储datatable数据,那么在按钮点击事件里你首先要将viewstate转换datatable得到里面的数据,将数据循环插入datatable,在将新的数据插入datatable,然后将datatable赋值给viewstate,只有这样每次才能将前面的数据加上,你写的根本没有得到viewstate中的数据,而每次给viewstate付了一条新值,所以每次都是一条,呵呵,希望对你有用
#12
因为我看了下你的方法。。有点看不懂。。刚学.net。。。不好意思啊。。。好的。。我去试试。。
#13
我在selectindexchanged()方法里面写我的方法了,就是想选择了一行后返回这这一行的数据给我的textbox控件,我是这么写的,可是点击了没反应。。。是什么原因呢???
protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{
TextBox1.Text = GridView1.SelectedRow.Cells[1].Text;
TextBox2.Text = GridView1.SelectedRow.Cells[2].Text;
TextBox3.Text = GridView1.SelectedRow.Cells[3].Text;
TextBox4.Text = GridView1.SelectedRow.Cells[4].Text;
TextBox5.Text = GridView1.SelectedRow.Cells[5].Text;
TextBox6.Text = GridView1.SelectedRow.Cells[6].Text;
}
#14
为什么不直接把表单的数据插入到数据库里,然后再去控件里绑定出来!!
我觉得这是一个什么样的业务,你需要明确!!
我觉得这是一个什么样的业务,你需要明确!!
#15
这个好比购物车那样吧。。。一个订单会有多个商品,所以在一个订单添加多个商品的时候,你要把这多个商品放在一个datatable上面啊,最后再提交表单的时候把这个整个页面的订单写进数据库里面。。。
#16
lz搞定了吗,我也有这个问题
#17
http://topic.csdn.net/u/20111116/14/37319feb-456f-4c2b-88e0-8042ed3e5064.html?2057630353
lz,上这看12楼可以解决你的问题
lz,上这看12楼可以解决你的问题
#1
DataTable dt = new DataTable("AddGoods");
放在外面就可以了
saveGoods方法每次给dt添加一行
放在外面就可以了
saveGoods方法每次给dt添加一行
#2
你这样的DataTable每次只能存一次提交的值
#3
你每次调用DAL的方法DataTable dt = new DataTable("AddGoods");都会重新实例化一次,每次只把当前的值放到gridview上,不会累加。
可以用viewstate保存当前的gridview的值,每次向viewstate中添加数据,然后绑定到girdview上面去。
我如何选中这个gridview中的某行呢?楼主可以添加一个
<Columns>
<asp:CommandField HeaderText="选择" ShowSelectButton="True" />
</Columns>
然后在SelectedIndexChanged事件中写你的操作。。。
可以用viewstate保存当前的gridview的值,每次向viewstate中添加数据,然后绑定到girdview上面去。
我如何选中这个gridview中的某行呢?楼主可以添加一个
<Columns>
<asp:CommandField HeaderText="选择" ShowSelectButton="True" />
</Columns>
然后在SelectedIndexChanged事件中写你的操作。。。
#4
saveGoods方法就是每次执行都添加一行了吧?对datatable不太熟悉。。。
#5
这个viewstate怎么用呢?不知道如何用啊。。。可以举个例子不?
#6
public string Text
{
get { return (string)ViewState["Text"]; }
set { ViewState["Text"] = value; }
}
#7
我现在把代码改成如下还是添加不了多行数据啊。。。麻烦帮我看看那里错了。。。
public partial class AddGoods : System.Web.UI.Page
{
int i = 0;
DataTable dt = new DataTable("AddGoods");
protected void Page_Load(object sender, EventArgs e)
{
DataColumn dc = null;
dc = dt.Columns.Add("ID", Type.GetType("System.Int32"));
dc.AutoIncrement = true;//自动增加
dc.AutoIncrementSeed = 1;//起始为1
dc.AutoIncrementStep = 1;//步长为1
dc.AllowDBNull = false;//
dc = dt.Columns.Add("GoodsId", Type.GetType("System.Int32"));
dc = dt.Columns.Add("Name", Type.GetType("System.String"));
dc = dt.Columns.Add("Locality", Type.GetType("System.String"));
dc = dt.Columns.Add("Unit", Type.GetType("System.String"));
dc = dt.Columns.Add("Guige", Type.GetType("System.String"));
dc = dt.Columns.Add("Price", Type.GetType("System.Int32"));
dc = dt.Columns.Add("Num", Type.GetType("System.Int32"));
dc = dt.Columns.Add("Count", Type.GetType("System.Int32"));
}
protected void Button3_Click(object sender, EventArgs e)
{
string GoodsId = TextBox1.Text;
string Name = TextBox2.Text;
string Locality = TextBox3.Text;
string Unit = TextBox4.Text;
string Guige = TextBox5.Text;
string Price = TextBox6.Text;
string Num = TextBox7.Text;
string Count = TextBox8.Text;
DataRow newRow;
newRow = dt.NewRow();
newRow["GoodsId"] = ag.GoodsId;
newRow["Name"] = ag.Name;
newRow["Locality"] = ag.Locality;
newRow["Unit"] = ag.Unit;
newRow["Guige"] = ag.Guige;
newRow["Price"] = ag.Price;
newRow["Num"] = ag.Num;
newRow["Count"] = ag.Count;
dt.Rows.Add(newRow);
ViewState["dt"] = dt;
GridView1.DataSource = (DataTable)ViewState["dt"];
GridView1.DataBind();
}
public partial class AddGoods : System.Web.UI.Page
{
int i = 0;
DataTable dt = new DataTable("AddGoods");
protected void Page_Load(object sender, EventArgs e)
{
DataColumn dc = null;
dc = dt.Columns.Add("ID", Type.GetType("System.Int32"));
dc.AutoIncrement = true;//自动增加
dc.AutoIncrementSeed = 1;//起始为1
dc.AutoIncrementStep = 1;//步长为1
dc.AllowDBNull = false;//
dc = dt.Columns.Add("GoodsId", Type.GetType("System.Int32"));
dc = dt.Columns.Add("Name", Type.GetType("System.String"));
dc = dt.Columns.Add("Locality", Type.GetType("System.String"));
dc = dt.Columns.Add("Unit", Type.GetType("System.String"));
dc = dt.Columns.Add("Guige", Type.GetType("System.String"));
dc = dt.Columns.Add("Price", Type.GetType("System.Int32"));
dc = dt.Columns.Add("Num", Type.GetType("System.Int32"));
dc = dt.Columns.Add("Count", Type.GetType("System.Int32"));
}
protected void Button3_Click(object sender, EventArgs e)
{
string GoodsId = TextBox1.Text;
string Name = TextBox2.Text;
string Locality = TextBox3.Text;
string Unit = TextBox4.Text;
string Guige = TextBox5.Text;
string Price = TextBox6.Text;
string Num = TextBox7.Text;
string Count = TextBox8.Text;
DataRow newRow;
newRow = dt.NewRow();
newRow["GoodsId"] = ag.GoodsId;
newRow["Name"] = ag.Name;
newRow["Locality"] = ag.Locality;
newRow["Unit"] = ag.Unit;
newRow["Guige"] = ag.Guige;
newRow["Price"] = ag.Price;
newRow["Num"] = ag.Num;
newRow["Count"] = ag.Count;
dt.Rows.Add(newRow);
ViewState["dt"] = dt;
GridView1.DataSource = (DataTable)ViewState["dt"];
GridView1.DataBind();
}
#8
1、写个得到数据的方法
public DataTable getDataTable()
{
//这里主要是循环gridview中的数据
将gridview中的数据添加到datatable中
Datatable dt=;//写个公共方法创建datatable
dt.Rows.Clear();
for (int i = 0; i < GridView1.Rows.Count; i++)
{
}
}
2、再添加一行的按钮点击事件里调用这个方法
protected void Button2_Click(object sender, EventArgs e)
{
DataTable dt = getDataTable();
//添加一空行
DataRow dr = dt.NewRow();
//给每一列赋值
dr[“”]=””;
dr[“”]=””;
dr[“”]=””;
//绑定数据
dt.Rows.Add(dr);
GridView1.DataSource = dt;
GridView1.DataBind();
}
#9
每次都给viewstate附新值,肯定是一条啊,你给了viewstate但是每次应该循环得到原来的值,然后再添加吧?我是这样任务地,看看我给写的方法,改改
#10
那我要怎样才能循环存入viewstate呢?
#11
干什么总得要viewstate呢?我的那个实现的效果和你的是一样的,要用viewstate也行,声明一个viewstate用于存储datatable数据,那么在按钮点击事件里你首先要将viewstate转换datatable得到里面的数据,将数据循环插入datatable,在将新的数据插入datatable,然后将datatable赋值给viewstate,只有这样每次才能将前面的数据加上,你写的根本没有得到viewstate中的数据,而每次给viewstate付了一条新值,所以每次都是一条,呵呵,希望对你有用
#12
因为我看了下你的方法。。有点看不懂。。刚学.net。。。不好意思啊。。。好的。。我去试试。。
#13
我在selectindexchanged()方法里面写我的方法了,就是想选择了一行后返回这这一行的数据给我的textbox控件,我是这么写的,可是点击了没反应。。。是什么原因呢???
protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{
TextBox1.Text = GridView1.SelectedRow.Cells[1].Text;
TextBox2.Text = GridView1.SelectedRow.Cells[2].Text;
TextBox3.Text = GridView1.SelectedRow.Cells[3].Text;
TextBox4.Text = GridView1.SelectedRow.Cells[4].Text;
TextBox5.Text = GridView1.SelectedRow.Cells[5].Text;
TextBox6.Text = GridView1.SelectedRow.Cells[6].Text;
}
#14
为什么不直接把表单的数据插入到数据库里,然后再去控件里绑定出来!!
我觉得这是一个什么样的业务,你需要明确!!
我觉得这是一个什么样的业务,你需要明确!!
#15
这个好比购物车那样吧。。。一个订单会有多个商品,所以在一个订单添加多个商品的时候,你要把这多个商品放在一个datatable上面啊,最后再提交表单的时候把这个整个页面的订单写进数据库里面。。。
#16
lz搞定了吗,我也有这个问题
#17
http://topic.csdn.net/u/20111116/14/37319feb-456f-4c2b-88e0-8042ed3e5064.html?2057630353
lz,上这看12楼可以解决你的问题
lz,上这看12楼可以解决你的问题